行名相同的行的平均值(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")))
我有一个很大的矩阵,像这样:
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")))