我是使用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
答案 0 :(得分:1)
使用rbind
合并df1
和df2
,然后选择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
。