在R

时间:2017-12-06 19:12:24

标签: r dataframe merge

我有两个数据帧

P_ID      C_ID   D_ID ...
520686814 1222   1281
336892632 1232   8181 ...

str(master$P_ID) : integer64 [1:12000] 520686814 336892632 140101133 85433815 339389222

另外

尺寸

p_id      year  gender state
520686814 2017  1      A
336892632 2016  2      B

str(Dimension$p_id) : num [1:9915433] 520686814 336892632 636774575 248552775...

基本上我可以看到两个数据帧中都有匹配p_id的记录。所以我使用

进行联接
joined <- merge(master, Dimension, by.x = "P_ID", by.y = "p_id")

令我惊讶的是,我没有加入任何记录。加入是否不适用于不同的数据类型,即使它们在子集化时也能正常工作?

1 个答案:

答案 0 :(得分:1)

假设您没有对它们执行任何数学运算,您可以(有些人认为应该)将ID存储为字符串。我的理解是这是一种更安全的方法。此外,合并字符串比合并数字更快。

master$P_ID <- as.character(master$P_ID)
Dimension$p_id <- as.character(Dimension$p_id)
joined <- merge(master, Dimension, by.x = "P_ID", by.y = "p_id")

上面的代码应该完成它。它没有回答合并失败的原因,但确实为您提供了解决方法。