假设我有2个数据帧,其结构如下:
组:
P1 P2 P3 P4
123 213 312 231
345 123 213 567
Run Code Online (Sandbox Code Playgroud)
INDIVIDUAL_RESULTS:
ID SCORE
123 23
213 12
312 11
213 19
345 10
567 22
Run Code Online (Sandbox Code Playgroud)
我想在上添加一列,GROUPS
这是它们各自结果的总和:
P1 P2 P3 P4 SCORE
123 213 312 231 65
Run Code Online (Sandbox Code Playgroud)
我尝试使用各种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)
Run Code Online (Sandbox Code Playgroud)
我将使用apply
和match
函数。Apply将对d1的每一行应用match函数,match将从d1和d2 $ ID(它们的索引)行中找到匹配的值,然后在这些索引处获取d2 $ SCORE中的值。最后我们总结一下。
d1$SCORE=apply(d1,1,function(x){
sum(d2$SCORE[match(x,d2$ID)])
})
Run Code Online (Sandbox Code Playgroud)
和结果
P1 P2 P3 P4 SCORE
1 123 213 312 231 65
2 345 123 213 567 67
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
65 次 |
最近记录: |