R:是否有 "rowsum" 的列版本,但计算均值而不仅仅是总和?
R: Is there a column version for "rowsum", but to compute the mean and not just the sum?
我有一个矩阵,列根据分组变量分组:
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 x 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
命令,但是它通过分组变量对行求和,并且没有现成的选项来计算平均值。
如有任何帮助,我将不胜感激。
我们可以在 'group' 的 data.frame
上使用 split.default
按列拆分,然后在 list
的 list
上执行 rowMeans
=21=]
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)
我有一个矩阵,列根据分组变量分组:
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 x 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
命令,但是它通过分组变量对行求和,并且没有现成的选项来计算平均值。
如有任何帮助,我将不胜感激。
我们可以在 'group' 的 data.frame
上使用 split.default
按列拆分,然后在 list
的 list
上执行 rowMeans
=21=]
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)