[英]Compute group aggregates over a dynamic number of columns in R
我有一個類似於下表的大型數據集(進一步稱為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)
怎樣才能更快地做到這一點?
我們可以使用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])]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.