【发布时间】:2018-02-12 06:56:53
【问题描述】:
我有 2 个这样的数据框:
df1:
ID A B C
1 4 7 5
2 3 8 9
3 6 2 7
4 1 8 6
5 3 9 1
6 7 8 3
df2:
ID D E F
1 6 8 9
2 2 1 1
3 6 1 9
我想从 df1 中删除 df2 中不存在的行,然后合并 2 个数据集。
期望的输出是:
df3:
ID A B C D E F
1 4 7 5 6 8 9
2 3 8 9 2 1 1
3 6 2 7 6 1 9
我已经尝试了以下所有方法,但没有得到正确的结果:
df1 <- df1[(df1$ID %in% df2$ID),]
df1 <- df1[(df2$ID %in% df1$ID),]
df1 <- semi_join(df1,df2)
df1 <- semi_join(df1,df2, by="ID")
我也尝试过其他的“join”方法,比如“inner_join”和“left_join”。
【问题讨论】:
-
使用
anti_join或setdiff -
@akrun - 恐怕 anti_join 也没有提供正确的结果。你能详细说明一下'setdiff'吗?
-
merge(df1, df2["ID"], by = "ID", all.y = T). -
@djhurio - 谢谢,但也没有给我正确的结果。也许我的数据有问题。
-
@djhurio - 我又试了一次,合并给了我所需的结果!