R - 选择性地组合矩阵列

时间:2015-03-07 00:55:40

标签: 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  82.6446281 
P   0.5224135   0.3527982   0.1247883  

我需要根据第1行中的相等元素组合第2行的元素。

在这种情况下,m2[2,2] = m1[2,2] + m1[2,3]

由于

2 个答案:

答案 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