R dplyr加入日期范围

时间:2018-08-17 16:13:39

标签: r dplyr

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

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

2 个答案:

答案 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