有没有办法按以下方式组合矩阵的列:
输入:
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]
由于
答案 0 :(得分:4)
在基地R中,例如使用aggregate
:
t(aggregate(P~S,t(dat),sum))
[,1] [,2] [,3]
S 82.6446281 100.0000000 121.0000000
P 0.1247883 0.3527982 0.5224135
请注意在此处使用转置。通常,按列分组比按行分组更容易。
答案 1 :(得分:1)
这将完全实现并演示@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