删除两个不同数据帧中的公共行

时间:2017-02-03 14:03:42

标签: r dataframe

我是使用R的初学者。我有两个不同的数据帧,如图像df-1和df-2。我想组合两个数据帧并删除公共行。 (或者我想删除常见行并希望保留行的唯一ID。

因此,我想做的就像df-3。 merge不合适,因为我不需要常见的行。

df-1

          ID       NUMBER           FORM     DATE        CD       AD
1        A15      200302033666        1    20031219       3        7
2        B67      200302034466        1    20031204       3        1
3        C15      200302034455        1    20031223       3        1
4        D67      200303918556        1    20030319       3        1
5        E48      200303918575        1    20030304       3        1
6        F80      200303918588        1    20030325       3        1
7        G63      200303918595        1    20030317       3        1



df-2

          ID       NUMBER           FORM    DATE         CD        AD
1        A15      200302033666        1    20031219       3        7
2        K99      200402034466        1    20041204       2        3
3        Z75      200502034455        2    20021222       1        6
4        D67      200303918556        1    20030319       3        1
5        E48      200303918575        1    20030304       3        1
6        F80      200303918588        1    20030325       3        1
7        G63      200303918595        1    20030317       3        1


df-3

          ID       NUMBER           FORM     DATE        CD        AD

1        B67      200302034466        1    20031204       3        1
2        C15      200302034455        1    20031223       3        1
3        K99      200402034466        1    20041204       2        3
4        Z75      200502034455        2    20021222       1        6

3 个答案:

答案 0 :(得分:1)

使用rbind合并df1df2,然后选择unique

df3 <- unique(rbind(df1,df2))

答案 1 :(得分:0)

你能在df3上使用unique来保留唯一的行吗?或者,在一行中,

df3 <- unique(merge(df1, df2))

另外,在命名变量时避免使用括号 - df(1)看起来像“将函数df应用于1”

答案 2 :(得分:0)

如果我正确地解释您的问题,您需要一个只包含一个原始数据帧的记录的数据框。 使用dplyr:

library(dplyr)
df1_anti <- anti_join(df1, df2)
df2_anti <- anti_join(df2, df1)
df3 <- bind_rows(df1_anti, df2_anti)

df1_anti包含df1但不在df2中的行 df2_anti包含df2但不在df1中的行 df3是两个dfs的UNION

相关问题