Довольно просто разбить data.frame
на строки в зависимости от коэффициента группировки. Но как мне разбить на столбцы и, возможно, применить функцию?
my.df <- data.frame(a = runif(10),
b = runif(10),
c = runif(10),
d = runif(10))
grp <- as.factor(c(1,1, 2,2))
То, что я хотел бы иметь, - это среднее значение по группам.
То, что я имею до сих пор, - это заявление бедного человека.
lapply(as.list(as.numeric(levels(grp))), FUN = function(x, cn, data) {
rowMeans(data[grp %in% x])
}, cn = grp, data = my.df)
EDIT
Спасибо всем за участие. Я выполнил 10 копий *, и мой рабочий data.frame имеет примерно 22000 строк. Это результаты в секундах.
Roman: 2.19
Joris: 4.60
Joris #2: 3.79 #changed sapply to lapply as suggested by Joris in the [R chatroom][1].
Gavin: 4.70
James & EDi: > 200 # * ran only one replicate due to the large order of magnitude difference
Мне показалось странным, что для этой задачи нет функции-обертки. Может быть, когда-нибудь мы сможем сделать
apply(X = my.df, MARGIN = 3, INDEX = my.groups, FUN = mean) # :)