如何在R中查找和求和多列

Flo*_*ish 4 r dplyr

假设我有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技术,但实际上只是造成了混乱。我觉得有一个我不知道的简单解决方案,非常感谢您提供一些指导!

use*_*951 6

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)

我将使用applymatch函数。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)