R 按日期加1或减1进行完全联接
我想用full_join连接两个表。下面是我的伪代码: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
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上执行该代码。