R dplyr加入日期范围

J. *_*oe. 8 r dplyr

我想连接两个表xxxyyy使用复合唯一键和日期范围。在 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)

akr*_*run 8

我们可以使用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)

  • @akrun 似乎有些人发现在 match_fun 列表中使用反引号而不是引号可以使其工作。 (8认同)

J. *_*oe. 8

首先,感谢您试图帮助我。我意识到我的问题不完整。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 回复