我想连接两个表xxx
并yyy
使用复合唯一键和日期范围。在 sql 中,我只需在连接中指定,但我无法开始dplyr
工作。这可能吗?
test<- inner_join(xxx, yyy, by = c("ID" = "ID",
"NRA"="NRA",
"date_low">"date",
"date_high"<"date"),
copy = FALSE)
Run Code Online (Sandbox Code Playgroud)
我们可以使用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("==", "==", ">", "<"))
Run Code Online (Sandbox Code Playgroud)
首先,感谢您试图帮助我。我意识到我的问题不完整。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")
Run Code Online (Sandbox Code Playgroud)
结果与这个问题几乎相同,但我怀疑它也可以根据 Uwe 的解决方案用这个问题data.table
来解决。
我还链接了这个rstudio 回复