我有两个数据帧
主
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")
令我惊讶的是,我没有加入任何记录。加入是否不适用于不同的数据类型,即使它们在子集化时也能正常工作?
答案 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")
上面的代码应该完成它。它没有回答合并失败的原因,但确实为您提供了解决方法。