【发布时间】:2018-04-04 22:49:58
【问题描述】:
我有 2 个这样的数据框
df1
date item
02/01/2017 A
09/01/2017 B
14/01/2017 C
df2
date1 date2 item prm
01/01/2017 03/01/2017 A YES
08/01/2017 10/01/2017 B YES
15/01/2017 17/01/2017 C YES
目的
prm 变量是一个常量变量,它只有 1 个值。
我想在这个条件下在我的 df1 中添加变量 prm
df1$date is between df2$date1 and df2$date2 and df1$item=df2$item
但是,如果条件不匹配,那么我需要 prm 获取值“NO”
【问题讨论】:
-
这是一个简单的 data.table 中的非等连接
-
我尝试使用 data.table 但我的 df 从 1 800 000 行传递到 800 000 行不知道为什么,因为当我执行唯一操作时,我仍然有 1 800 000 行
-
试试
library(data.table) ; setDT(df1)[setDT(df2), on = .(item, date >= date1, date <= date2), prm := i.prm](假设日期格式正确) -
很好,谢谢它像所有解决方案一样工作正常
标签: r dataframe data.table sqldf