我的数据看起来像这样:
test1 <- rbind(c(1,2,1,10,20,30),c(2,2,3,30,20,10),c(3,3,1,10,10,10))
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 2 1 10 20 30
[2,] 2 2 3 30 20 10
[3,] 3 3 1 10 10 10
我要做的是总结第4:6列中与1:3中相同值相对应的值,这样我得到3个新列,其中值的总和对应于1,2, 3
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 1 2 1 10 20 30 40 20 0
[2,] 2 2 3 30 20 10 0 50 10
[3,] 3 3 1 10 10 10 10 0 20
任何建议将不胜感激!
答案 0 :(得分:0)
这会将您可以cbind
的三列返回到矩阵中:
> do.call(cbind,lapply(1:3, function(c){rowSums((test1[,1:3]==c)*test1[,4:6])}))
[,1] [,2] [,3]
[1,] 40 20 0
[2,] 0 50 10
[3,] 10 0 20
它使用lapply
循环,但我没有看到如何在没有某种循环的情况下完成此操作,无法将数据完全展开为整齐的格式。