我正在尝试运行一个函数,该函数从多个数据帧中同时获取名称,值2,值3和名称。 output <- function(value1, value2, value3)
例如:
DF1:
time name value1
Jan 1990 1 4
Feb 1990 1 2
Mar 1990 1 3
Jan 1990 2 2
Feb 1991 2 1
DF2:
time name value2
Jan 1990 1 4
Feb 1990 1 2
Mar 1990 1 3
Jan 1990 2 2
Feb 1991 2 1
DF3:
time name value3
Jan 1990 1 4
Feb 1990 1 2
Mar 1990 1 3
Jan 1990 2 2
Feb 1991 2 1
我应该使用join然后在每行上应用吗?
output
time name output
Jan 1990 1 4
Feb 1990 1 2
Mar 1990 1 3
Jan 1990 2 2
Feb 1991 2 1
答案 0 :(得分:0)
使用-
选项1:dplyr 库(dplyr)
output <- inner_join(inner_join(df1, df2, by=c("time", "name")),
df3, by=c("time", "name"))
选项2:plyr
library(plyr)
join_all(list(df1,df2,df3), by=c('time','name'), type='inner')
选项3:基本R合并+减少
使用merge
+ reduce
-积分@akrun
Reduce(function(...) merge(..., by=c("time","name"), all.x=TRUE), list(df1,df2,df3))
输出
time name value1
1 Jan 1990 1 4
2 Feb 1990 1 2
3 Mar 1990 1 3
4 Jan 1990 2 2
5 Feb 1991 2 1
然后您可以根据需要重命名列。