合并并更改合并的列名

时间:2019-02-28 08:57:57

标签: r merge

如何合并2个数据框,然后更改合并数据框的列名。参见下面的示例。

> DF1
  A    B  C
1 3  axe aa
2 6 base bb
3 9  lol cc

> DF2
  D  E   F
1 6 ss gun
2 3 dd run
3 9 vv fun

> merge(x=DF1,y=DF2, by.x="A",by.y="D",all.x=TRUE)
  A    B  C  E   F
1 3  axe aa dd run
2 6 base bb ss gun
3 9  lol cc vv fun

我的问题是如何将合并的E和F重命名为A.E和A.F 所以应该是这样。

      A  B    C   A.E A.F
      3  axe  aa  dd  run
      6  base bb  ss  gun
      9  lol  cc  vv  fun

1 个答案:

答案 0 :(得分:0)

我编写了safejoin软件包,它非常简洁地解决了这个问题。

# devtools::install_github("moodymudskipper/safejoin")
library(safejoin)

eat(DF1, DF2, .by = c(A = "D"), .prefix = "A")
#   A    B  C A_E A_F
# 1 3  axe aa  dd run
# 2 6 base bb  ss gun
# 3 9  lol cc  vv fun

要获得准确的预期输出,我们可以在 .prefix参数:

eat(DF1, DF2, .by = c(A = "D"), .prefix = ~paste0("A.",.))
#   A    B  C A.E A.F
# 1 3  axe aa  dd run
# 2 6 base bb  ss gun
# 3 9  lol cc  vv fun

eat默认情况下是增强的左连接,prefix参数的设计是精确的 满足您的需求。