假设我有 2 个数据帧,结构如下:
GROUPS:
P1 P2 P3 P4
123 213 312 231
345 123 213 567
个人结果:
ID SCORE
123 23
213 12
312 11
213 19
345 10
567 22
我想添加一列GROUPS
这是他们各自结果的总和:
P1 P2 P3 P4 SCORE
123 213 312 231 65
我尝试过使用各种merge
技术,但实际上只是造成了混乱。我觉得有一个我不知道的简单解决方案,非常感谢一些指导!
d1=read.table(text="
P1 P2 P3 P4
123 213 312 231
345 123 213 567",h=T)
d2=read.table(text="
ID SCORE
123 23
213 12
312 11
231 19
345 10
567 22",h=T)
我将使用apply
and match
功能。 Apply 会将 match 函数应用于 d1 的每一行,match 将从 d1 和 d2$ID (它们的索引)行中查找匹配值,然后在这些索引处获取 d2$SCORE 中的值。最后我们总结一下。
d1$SCORE=apply(d1,1,function(x){
sum(d2$SCORE[match(x,d2$ID)])
})
和结果
P1 P2 P3 P4 SCORE
1 123 213 312 231 65
2 345 123 213 567 67
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)