我将尝试“整理”一个大型数据集,其中包含多种类型的数据合并在列中,并且某些数据在列名中。这是生物数据集中常见的情况。
我的数据表格具有重复测量值,我想将其折叠成平均值。将数据转换为整洁格式后,这些重复值变为额外的行。如果我尝试按多个列进行聚合/分组并计算重复值的平均值:
我得到了一个结果表,只包含在
以下是一个最简示例,显示我正在尝试实现的内容:
正如您所看到的,列
我的数据表格具有重复测量值,我想将其折叠成平均值。将数据转换为整洁格式后,这些重复值变为额外的行。如果我尝试按多个列进行聚合/分组并计算重复值的平均值:
collapsed.data <- tidy.dt[, mean(expression, na.rm = T), by=list(Sequence.window,Gene.names,ratio,enrichment.type,condition)]
我得到了一个结果表,只包含在
by
语句中使用的列,并且后面跟着mean(expression)
作为列V1
。是否可能也获取所有其他(未更改的)列?以下是一个最简示例,显示我正在尝试实现的内容:
library(data.table)
dt <- data.table(a = c("a", "a", "b", "b", "c", "a", "c", "a"), b = rnorm(8),
c = c(1,1,1,1,1,2,1,2), d = rep('x', 8), e = rep('test', 8))
dt[, mean(b), by = list(a, c)]
# a c V1
#1: a 1 -0.7597186
#2: b 1 -0.3001626
#3: c 1 -0.6893773
#4: a 2 -0.1589146
正如您所看到的,列
d
和 e
被删除了。
dt[,.(mean(b), head(d, 1), head(e, 1)), by=list(a,c)]
- Sotosd
和e
的值,即对于每个a
和b
的组合,d
和e
可能有多个可能的值。您需要明确指定您想要返回哪些值。 - David Arenburg