如何合并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发布于 2019-03-03 08:47:13
我编写了包,它非常简洁地解决了这个问题。
# 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参数正是为满足您这样的需求而设计的。
https://stackoverflow.com/questions/54921763
复制相似问题