我想使用复合唯一键和日期范围来联接两个表xxx
和yyy
。在sql中,我只需要在联接中指定即可,但是我无法使dplyr
正常工作。这可能吗?
test<- inner_join(xxx, yyy, by = c("ID" = "ID",
"NRA"="NRA",
"date_low">"date",
"date_high"<"date"),
copy = FALSE)
答案 0 :(得分:1)
我们可以使用fuzzy_inner_join
中的fuzzy_join
library(fuzzy_join)
fuzzy_inner_join(xxx, yyy,
by = c("ID" = "ID",
"NRA"="NRA",
"date_low" = "date",
"date_high" = "date"),
match_fun = list("==", "==", ">", "<"))
答案 1 :(得分:1)
首先,感谢您尝试帮助我。我意识到我的问题不完整。由于所有fuzzyjoin
的依赖性,我离开了bioconductor
。
我改用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")
结果几乎与此question相同,但我怀疑也可以根据Uwe的data.table
解决方案使用question来解决。
我也在链接此rstudio response