R 按日期加1或减1进行完全联接

R 按日期加1或减1进行完全联接,r,join,dplyr,R,Join,Dplyr,我想用full_join连接两个表。下面是我的伪代码: join <- full_join(a, b, by = c("a_ID" = "b_ID" , "a_DATE_MONTH" = "b_DATE_MONTH" +1 | "a_DATE_MONTH" = "b_DATE_MONTH" -1 | "a_DATE_MONTH" = "b_DATE_MONTH")) join虽然SQL在join语句中允许(几乎)任意条件(例如a_month=b_month+1或a_month+1=b_m

我想用full_join连接两个表。下面是我的伪代码:

join <- full_join(a, b, by = c("a_ID" = "b_ID" , "a_DATE_MONTH" = "b_DATE_MONTH" +1 | "a_DATE_MONTH" = "b_DATE_MONTH" -1 | "a_DATE_MONTH" = "b_DATE_MONTH"))
join虽然SQL在join语句中允许(几乎)任意条件(例如
a_month=b_month+1或a_month+1=b_month
),但我没有发现dplyr允许同样的灵活性

除了
a_column=b_column
之外,我发现加入
dplyr
的唯一方法是进行更一般的连接,然后进行过滤。因此,我建议您尝试以下方法:

join%

过滤器(abs(a\U日期\月份-b\U日期\月份)这不是一个RStudio问题,它是一个IDE,所以我已经从标题中删除了它。我假设您使用的是
dplyr
?A会很有用–这意味着可以使用代码和数据来演示解决方案。如果您没有与
dplyr
结婚,您可以进行非平等加入。我只使用R Studio,所以我更改了标题back、 我展示的代码只是用来演示逻辑的伪代码。你能给我一个关于如何使用data.table进行非等联接的简短演示吗?一点a_数据,b_数据可以走很长的路,
dput(head(a));dput(head(b))
RStudio不是一个包,它是一个IDE。您的问题完全独立于RStudio。如果您在命令行中使用
RScript
运行脚本,问题也会一样。
full\u join
不是一个基本函数,它属于一个包–很可能您正在使用
dplyr
,但您应该确认。正如我所说的,它是如果您提供一些数据,那么回答您的问题(例如,demo的非equi联接)会容易得多,即使它只是数据的一小部分或a。您知道如何用R编写SQL查询代码来实现这一点吗?有两个选项:(1)
dbplyr
包允许您作为远程数据帧访问SQL数据库,然后您可以编写R代码,它将转换为SQL并在服务器上执行。但是,您仍然必须使用上面的连接筛选器方法。(2)
DBI
包允许您将SQL代码作为文本字符串写入R中,然后在SQL server上执行该代码。