【发布时间】:2018-09-12 00:43:40
【问题描述】:
我正在尝试合并/加入 R 中的数据,但遇到了问题。
我需要从每个数据集中指定多个变量,然后从数据集 2 中指定一个具有静态值的变量。
有点像
DF1 <- data.frame(ID=c('1','2','3','4'),
Date=c('1 Apr','1 Apr','1 Apr','1 Apr'),
Sale=c('1000','1000','1000','1000'))
DF2 <- data.frame(ID=c('1','1','2','3','4'),
Date=c('1 Apr','1 Apr','1 Apr','1 Apr','1 Apr'),
Sale=c('1000','1000','1000','1000','1000'),
Key=c('P','S','P','P','P'))
DF1
ID | Date | Sale |
-----------------------
1 1 Apr 1000
2 1 Apr 1000
3 1 Apr 1000
4 1 Apr 1000
DF2
ID | Date | Sale | Key |
-------------------------------
1 1 Apr 1000 P
1 1 Apr 1000 S
2 1 Apr 1000 P
3 1 Apr 1000 P
4 1 Apr 1000 P
我需要加入 DF1 和 DF2 中具有相同名称的三个变量,其中 Key == P 来自 DF2。我熟悉 merge 和 left_join 的语法,但如果我尝试指定 DF2 中的键变量需要 == 静态值,而不是必须与 DF1 中的某些内容匹配,我无法让它们工作。
类似:
DF3 <- left_join(DF1, DF2, c("ID1.x" = "ID.y",
"Date.x" = "Date.y", "Sale.x" = "Sale.y", DF2$Key == "P"),
na.matches = "never")
我知道这行不通,但希望它能提供一些关于我想要做什么的想法。一个变量是静态的,在 DF2 中充当过滤器。
如果有人问,不,我不能简单地删除 Key != P 的所有行。
非常感谢任何帮助。
【问题讨论】: