r - 按多个组选择多个数据帧上的值
问题描述
我正在尝试运行一个函数,该函数从多个数据帧中获取同一时间的 value1、value2、value3 和名称。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:基础 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
然后,您可以根据需要重命名列。
推荐阅读
- c# - 带有 wpf MVVM 的无线电检查功能
- python - 即使键不同,按时间顺序排列的 Python 顺序字典
- encryption - SHA 256 输出字长
- reactjs - React JSX - 在循环中注入 br 标签
- javascript - 关于事件冒泡的本机 dom 事件持久性
- mysql - Laravel 按费率计算总余额
- javascript - Uncaught (in promise) TypeError: d3.group is not a function
- java - Spring中@Autowired最终设置器和非最终设置器之间的区别
- javascript - 我可以在自定义挂钩中使用自定义挂钩吗?
- python - 如何使用来自另一个数据帧的值过滤不在数据帧中的记录?