Вычислить совокупность групп по динамическому количеству столбцов в R - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть большой набор данных, похожий на следующую таблицу (называемый 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)

Как это можно сделать быстрее?

1 Ответ

0 голосов
/ 14 февраля 2019

Мы можем использовать 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])]
...