R: Есть ли версия столбца для "rowum", но для вычисления среднего значения, а не только суммы? - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть матрица со столбцами, сгруппированными по переменной группировки:

x <- matrix(sample(1:10,20,T),ncol=4)
     [,1] [,2] [,3] [,4]
[1,]    7    8    5    3
[2,]    7    5    4    7
[3,]    7    1    9    3
[4,]    4    8    8    8
[5,]    9    9    1    5

group <- sample(1:2, 4, TRUE)
[1] 1 2 1 2

Какой самый элегантный способ вычислить среднее значение каждой строки, сгруппированной по переменной группировки столбцов?Результатом для показанного примера должна быть матрица 5 на 2:

       1   2
[1,] 6.0 5.5
[2,] 5.5 6.0
[3,] 8.0 2.0
[4,] 6.0 8.0
[5,] 5.0 7.0

Я посмотрел на команду rowsum, но она суммирует строки по переменной группировки и не имеет готовой опции длявычислите среднее значение.

Буду очень признателен за любую помощь.

1 Ответ

0 голосов
/ 12 ноября 2018

Мы можем использовать split.default на data.frame по 'группе', чтобы разделить по столбцам, а затем сделать rowMeans на list data.frames

sapply(split.default(as.data.frame(x), group), rowMeans)
#      1   2
#[1,] 6.0 5.5
#[2,] 5.5 6.0
#[3,] 8.0 2.0
#[4,] 6.0 8.0
#[5,] 5.0 7.0

данные

x <- structure(c(7, 7, 7, 4, 9, 8, 5, 1, 8, 9, 5, 4, 9, 8, 1, 3, 7, 
       3, 8, 5), .Dim = 5:4)
group <- c(1, 2, 1, 2)
...