使用reduce合并数据帧-如何添加Merge by选项
我的代码:使用reduce合并数据帧-如何添加Merge by选项,r,list,dataframe,merge,reduce,R,List,Dataframe,Merge,Reduce,我的代码: df1 <- data.frame("X1"=c("John","Sam","Dave"),"X2"=c(21,22,25)) df2 <- data.frame("X1"=c("John","Sam"),"X2"=c(22,25)) df3 <- data.frame("X1"=c("John","Sam","Dave"),"X2"=c("US","SA","NZ")) mylist <- list(df1,df2,df3) merged= Reduce(f
df1 <- data.frame("X1"=c("John","Sam","Dave"),"X2"=c(21,22,25))
df2 <- data.frame("X1"=c("John","Sam"),"X2"=c(22,25))
df3 <- data.frame("X1"=c("John","Sam","Dave"),"X2"=c("US","SA","NZ"))
mylist <- list(df1,df2,df3)
merged= Reduce(function (...) merge(..., all= T), mylist)
然而,我想要的输出是
names X1 X2.x X2.y
1 Dave 25 NA NZ
2 John 21 22 US
3 Sam 22 25 SA
我知道,如果我以不同的方式命名列,我可以获得所需的输出,但这不是这里的选项。具体地说,我想知道如何添加带有Reduce函数的“by=“X1”参数,就像在merge函数中单独使用的那样。注释中@calwellst所说的,但需要做一些准备(比如键入)
merged=Reduce(函数(…)merge(…,all=T,by=“X1”),mylist)
names X1 X2.x X2.y
1 Dave 25 NA NZ
2 John 21 22 US
3 Sam 22 25 SA
library( data.table )
#set as data.table
lapply( mylist, setDT )
#set keys
lapply( mylist, setkey, X1)
#merge
Reduce( function(...) merge(..., all = TRUE), mylist )
# X1 X2.x X2.y X2
# 1: Dave 25 NA NZ
# 2: John 21 22 US
# 3: Sam 22 25 SA