假设我有数据框df1:
df1
R1
1 A
2 B
3 C
4 D
5 E
6 F
7 G
8 H
另一个数据框df2:
df2
R1 R2
1 A 2
2 B 5
3 D 7
4 E 9
5 F 12
6 J 16
我如何在名为R2的df1中创建一个新列,根据df2 $ R1的匹配条目将df2 $ R2中的正确值归为df1 $ R2?我试图这样做的任何方式我最终得到与长度差异有关的错误 . 但是,有没有办法可以将df2 $ R2中的值强制转换为df1中的新列,并且在df1中的任何行中只有NAs(或NaN或其他),而df2 $ R1中不存在相应的值?并且还忽略了df2中df1中没有对应行的条目(例如,第6行,其中R1 = J,因为df1 $ R1中没有J) . 对于我的例子,我想要的数据集如下所示:
R1 R2
1 A 2
2 B 5
3 C NA
4 D 7
5 E 9
6 F 12
7 G NA
8 H NA
所以基本上,如果df2 $ R1与df1 $ R1相同,则df1 $ R2应等于df2 $ R2等于 . 对不起,如果之前有人询问,如果有,我找不到它 . 谢谢 .
2 回答
这是
match
函数的任务 . 它的主要用途是生成适用于"["函数的索引,即用于选择其他元素或行 . 它是merge
操作中的一个关键功能,但是完整的merge
并不是你所要求的:merge
使用all.x
(或all.y
)参数执行此操作,以指示使用其中一个输入的所有行: