计算组聚合在R中的动态列数上

时间:2019-02-13 22:38:09

标签: r dataframe aggregate

我有一个类似于下表的大型数据集(在下面称为results.raw,其中有一些独立变量(X000X306)和一些因变量(它们具有不同的名称):

X000  X001  X002 ... X306  MEASURE1  OUT2  ... RESULTN
1     2     1        2     1         2         2
1     2     1        2     2         3         1
                 ...
2     3     1        4     5         3         3
                 ...

我想在独立变量相等时对这个数据集分组取平均值。我提出了以下R命令,该命令似乎可以运行,但是速度很慢

aggregate(results.raw, by = as.list(lapply(as.list(colnames(results.raw)[1:307]), FUN = function (x) { results.raw[,x] })), FUN = mean)

如何使其更快?

1 个答案:

答案 0 :(得分:1)

我们可以使用tidyverse

library(dplyr)
results.raw %>% 
    group_by_at(1:307) %>% 
    summarise_all(mean)

或与data.table

library(data.table)
setDT(results.raw)[, , lapply(.SD, mean), by = c(names(results.raw)[1:307])]