我有三个数据帧 . 第一个数据帧如下
ID Col1 Col2 Col3
XX:11 1 0 0
YY:22 1 0 0
ZZ:33 0 1 0
AA:44 0 0 1
BB:55 0 0 1
第二数据帧如下
ID Col1
YY:22 0
AA:44 1
XX:11 1
DD:99 0
第三个数据框是
ColA ColB ColC
ColA,ColB和ColC分别对应于数据帧1的Col1,Col2和Col3 .
我试图从第一个存在的第二个数据帧中找到ID,如果它们存在,则在第三个数据帧中递增相应的Col * .
例如,从第二个数据帧中获取ID YY:22 . 这存在于第一个数据帧中,然后查看哪个列(来自Col1,Col2和Col3)具有1,然后相应地增加第三个数据帧中的相应列 . 在这种情况下,YY:22在第一个数据帧中的COl1为1,因此ColA需要在第三个数据帧中递增 .
编辑:预期输出是
ColA ColB ColC
2 0 1
数据框2中的Col1无关紧要
3 回答
使用
dplyr
我们可以这样做:输出:
如果您需要列名为A,B,C,那么您现在可以像akrun的答案一样重命名它们:
您可以尝试从
dplyr
给semi_join
:我们可以在两个数据集的'ID'之间使用
match
,基于该子集'df1'的子集,并使用colSums
获取'Col'列的sum