我想一次合并多个数据框。在该方法下,我当前正在使用合并。我的资料:
df <- data.frame('ID'=c('A','B','C'),'YEAR'=c('2020','2020','2020'),'MONTH'=c('1','1','1'),'DAY'=c('16','16','16'),'HOUR'=c('15','15','15'),'VALUE1'=c(1,2,3))
df1 <- data.frame('ID'=c('A','B','C'),'YEAR'=c('2020','2020','2020'),'MONTH'=c('1','1','1'),'DAY'=c('16','16','16'),'HOUR'=c('15','15','15'),'VALUE2'=c(3,4,5))
df2 <- data.frame('ID'=c('A','B','C'),'YEAR'=c('2020','2020','2020'),'MONTH'=c('1','1','1'),'DAY'=c('16','16','16'),'VALUE3'=c(6,7,8))
df3 <- data.frame('ID'=c('A','B','C'),'YEAR'=c('2020','2020','2020'),'MONTH'=c('1','1','1'),'VALUE4'=c(9,10,11))
我的合并方法:
df4 <- merge(df,df1,by=c('ID','DAY','MONTH','YEAR','HOUR'),all.x=T)
df5 <- merge(df4,df2,by=c('ID','DAY','MONTH','YEAR'),all.x=T)
df6 <- merge(df5,df3,by=c('ID','MONTH','YEAR'),all.x=T)
我的输出:
ID MONTH YEAR DAY HOUR VALUE1 VALUE2 VALUE3 VALUE4
1 A 1 2020 16 15 1 3 6 9
2 B 1 2020 16 15 2 4 7 10
3 C 1 2020 16 15 3 5 8 11
是否有任何好的合并方法可以使代码更有效。感谢您的帮助。
您可以merge
在中使用Reduce
:
Reduce(merge, list(df, df1, df2, df3))
# ID YEAR MONTH DAY HOUR VALUE1 VALUE2 VALUE3 VALUE4
#1 A 2020 1 16 15 1 3 6 9
#2 B 2020 1 16 15 2 4 7 10
#3 C 2020 1 16 15 3 5 8 11
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句