行名相同的行的平均值(R 中的矩阵)

mean of the rows where the row name is same (matrix in R)

我有一个很大的矩阵,像这样:

 m:
     0   60   120   180... (column names) 
  0  2    4    5     9
  0  6    8    7     6
  0  5    2    6     4
  0  3    4    1     3
 60  4    5    3     1
 60  4    6    10    2
  .
  .
(row names)  

我想计算同名行的平均值。我怎么能在 R 中做到这一点?结果看起来像这个矩阵:

k:
     0   60   120   180... (column names) 
  0  4   4,5  4,75  5,5
 60  4   5,5  6,5   1,5         
  .
  .
(row names)  

我想这真的很基本,但我就是想不通。我会很感激一点帮助。谢谢!

这是 base R

aggregate 的一个选项
aggregate(m, list(row.names(m)), mean)
#  Group.1 0  60  120 180
#1       0 4 4.5 4.75 5.5
#2      60 4 5.5 6.50 1.5

或使用tapply

tapply(m, list(row.names(m)[row(m)], colnames(m)[col(m)]), FUN = mean)

或使用by

do.call(rbind, by(m, row.names(m), FUN = colMeans))
#    0  60  120 180
#0  4 4.5 4.75 5.5
#60 4 5.5 6.50 1.5

split

t(sapply(split(as.data.frame(m), row.names(m)), colMeans))

数据

m <- structure(c(2, 6, 5, 3, 4, 4, 4, 8, 2, 4, 5, 6, 5, 7, 6, 1, 3, 
10, 9, 6, 4, 3, 1, 2), .Dim = c(6L, 4L), .Dimnames = list(c("0", 
"0", "0", "0", "60", "60"), c("0", "60", "120", "180")))