select 多个组的多个数据帧上的值

select values on multiple data frames by multiple groups

我正在尝试 运行 一个从多个数据帧中同时获取值 1、值 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: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:Base R merge+reduce

使用 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

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