合并data.frame但只保留唯一列?

Joh*_*ler 2 r

假设我想合并两个data.frames,但有些列是冗余的(相同).我如何合并这些data.frames但删除冗余列?

X1 = data.frame(id = c("a","b","c"), same = c(1,2,3), different1 = c(4,5,6))
X2 = data.frame(id = c("b","c","a"), same = c(2,3,1), different2 = c(7,8,9))


merge(X1,X2, by="id", all = TRUE, sort = FALSE)




id same.x different1 same.y different2
1  a      1          4      1          9
2  b      2          5      2          7
3  c      3          6      3          8
Run Code Online (Sandbox Code Playgroud)

但是,我如何得到不同的1和不同的2列?

id same different1 different2
1  a    1     4      9
2  b    2     5      7
3  c    3     6      8
Run Code Online (Sandbox Code Playgroud)

sgi*_*ibb 5

您可以在by参数中包含相同的列.默认是by=intersect(names(x), names(y)).尝试merge(X1, X2)(它是一样的merge(X1, X2, by=c("id", "same"))):

 merge(X1,  X2)
 #  id same different1 different2
 #1  a    1          4          9
 #2  b    2          5          7
 #3  c    3          6          8
Run Code Online (Sandbox Code Playgroud)

  • 我不知道默认是如此之好.:) (2认同)