R-有选择地组合矩阵的列
是否有一种方法可以按照以下方式组合矩阵的列: 输入:R-有选择地组合矩阵的列,r,matrix,R,Matrix,是否有一种方法可以按照以下方式组合矩阵的列: 输入: m1 [,1] [,2] [,3] [,4] S 121.0000000 100.0000000 100.0000000 82.6446281 P 0.5224135 0.1790449 0.1737533 0.1247883 输出: m2 [,1] [,2] [,3] S 121.0000000 100.0000000
m1
[,1] [,2] [,3] [,4]
S 121.0000000 100.0000000 100.0000000 82.6446281
P 0.5224135 0.1790449 0.1737533 0.1247883
输出:
m2
[,1] [,2] [,3]
S 121.0000000 100.0000000 82.6446281
P 0.5224135 0.3527982 0.1247883
我需要根据第1行中相等的元素组合第2行的元素
在这种情况下,m2[2,2]=m1[2,2]+m1[2,3]
感谢以R为基数的,使用
聚合
例如:
t(aggregate(P~S,t(dat),sum))
[,1] [,2] [,3]
S 82.6446281 100.0000000 121.0000000
P 0.1247883 0.3527982 0.5224135
注意这里使用的转置,通常按列分组比按行分组更容易 这将充分实施并证明@jbaums的建议:
> rbind(sort( m1[1, !duplicated (m1[1,])] ), tapply(m1[2, ], m1[1, ], sum))
82.6446281 100 121
[1,] 82.6446281 100.0000000 121.0000000
[2,] 0.1247883 0.3527982 0.5224135
类似于
tapply(m1[2,],m1[1,],sum)
,对于您的简单示例,这将无法正常工作。你必须对你的m1[1,!duplicated(m[1,])]
进行排序。没错。固定的。