R dplyr 加入日期范围



我想使用复合唯一键和日期范围连接两个表xxxyyy。在 sql 中,我只需在连接中指定,但我无法dplyr工作。这可能吗?

test<- inner_join(xxx, yyy, by = c("ID" = "ID",
"NRA"="NRA",
"date_low">"date",
"date_high"<"date"),
copy = FALSE)

我们可以使用fuzzy_join中的fuzzy_inner_join

library(fuzzy_join)
fuzzy_inner_join(xxx, yyy,
by = c("ID" = "ID",
"NRA"="NRA",
"date_low" =  "date",
"date_high" = "date"), 
match_fun = list("==", "==", ">", "<"))

首先,感谢您对我的帮助。我意识到我的问题不完整。由于所有bioconductor依赖关系,我离开了fuzzyjoin

我改用sqldf来完成任务:

library(sqldf)
sqldf("SELECT * FROM xxx
LEFT JOIN yyy
ON  xxx.ID  = yyy.ID
AND xxx.NRA = yyy.NRA
AND yyy.date BETWEEN xxx.date_low AND xxx.date_high")

结果几乎与这个问题相同,但我怀疑也可以根据 Uwe 的data.table解决方案用这个问题来解决。

我也链接了这个工作室的回应

最新更新