我有一个类似于下表的大型数据集(在下面称为results.raw
,其中有一些独立变量(X000
至X306
)和一些因变量(它们具有不同的名称):
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)
如何使其更快?
答案 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])]