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
然后您可以根据需要重命名列。
我正在尝试 运行 一个从多个数据帧中同时获取值 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
然后您可以根据需要重命名列。