聚合data.table的所有列,而不必按名称引用它们

时间:2013-08-06 21:50:13

标签: r aggregate data.table

我想做相同的以下内容,但使用data.table的“by”:

dt <- data.table(V1=rnorm(100), V2=rnorm(100), V3=rnorm(100), ...
                 group=rbinom(100,2,.5))
dt.agg <- aggregate(dt, by=list(dt$group), FUN=mean)

我知道我可以这样做:

dt.agg <- dt[, list(V1=mean(V1), V2=mean(V2), V3=mean(V3)), by=group]

但是对于这种情况我正在考虑我有100个左右的列V1-V100(我总是希望将所有这些列聚合在一起,如上面的汇总)所以我得到的data.table解决方案以上是不可行的。

1 个答案:

答案 0 :(得分:36)

dt[, lapply(.SD, mean), by=group]

指定列:

dt[,...,by=group, .SDcols=c("V1", "V2", "V3", ...)]
dt[,...,by=group, .SDcols=names(dt)[1:100]]