我想使用复合唯一键和日期范围连接两个表xxx
和yyy
。在 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
解决方案用这个问题来解决。
我也链接了这个工作室的回应