按多个组选择多个数据框上的值

时间:2019-01-17 05:13:09

标签: r dplyr zoo

我正在尝试运行一个函数,该函数从多个数据帧中同时获取名称,值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

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

然后您可以根据需要重命名列。