合并两个数据集时遇到问题,希望有人可以帮助我。
以下是一些示例数据:
d1 <- data.frame(id=c(rep(1,3),2),a=c("x","y","z",NA),b=c(10,20,30,NA))
# id a b
# 1 1 x 10
# 2 1 y 20
# 3 1 z 30
# 4 2 <NA> NA
d2 <- data.frame(id=c(rep(1,3)),a=c("x","y","z"),b=c(10,20,30),c=c("d","e","f"))
# id a b c
# 1 1 x 10 d
# 2 1 y 20 e
# 3 1 z 30 f
我想合并两个数据集以获得以下集合:
# id a b c
# 1 1 x 10 d
# 2 1 y 20 e
# 3 1 z 30 f
# 4 2 <NA> NA <NA>
然而,当我使用合并功能时,我得到一个意外的(至少对我来说)结果:
merge(d1,d2[,c("id","c")],all.x=TRUE,by="id")
# id a b c
# 1 1 x 10 d
# 2 1 x 10 e
# 3 1 x 10 f
# 4 1 y 20 d
# 5 1 y 20 e
# 6 1 y 20 f
# 7 1 z 30 d
# 8 1 z 30 e
# 9 1 z 30 f
# 10 2 <NA> NA <NA>
问题可能在于我有多行具有相同的'id' (每个代表同一个人的单独案件),但是, 我似乎无法在这里找出我做错了什么。非常感谢任何帮助!
答案 0 :(得分:1)
@DavidArenburg发表评论,你可以这样做:
merge(d1, d2, all.x = TRUE, by = c("id", "a", "b"))