【发布时间】:2017-11-25 08:01:02
【问题描述】:
我有两个表,我想根据两个条件在 R 中合并,其中一个是两天之间的差异,介于 -30 和 +30 天之间。
ID FINAL_AMOUNT ProcedureDate
10001282 19320 3/22/2017 1:44
10001282 37103 3/23/2017 11:11
10001282 22423 3/22/2017 19:49
ID ResultDate Amount 2
10001282 4/3/2017 6:25 0.4
10001282 3/27/2017 5:33 150.99
10001282 3/29/2017 5:50 116.71
10001282 4/5/2017 7:27 150.99
10001282 3/27/2017 5:33 0.4
10001282 3/29/2017 5:50 0.5
10001282 4/3/2017 6:25 150.99
10001282 4/5/2017 7:27 0.4
10001282 4/5/2017 7:27 0.4
10001282 4/5/2017 7:27 150.99
10001282 3/27/2017 5:33 0.4
10001282 3/29/2017 5:50 0.5
10001282 4/3/2017 6:25 150.99
10001282 4/3/2017 6:25 0.4
10001282 3/27/2017 5:33 150.99
10001282 3/29/2017 5:50 116.71
我想要一个笛卡尔积,表 1 是我的基表。 我正在使用下面的代码,但由于没有正确计算日差,我没有得到想要的结果。
library(sqldf)
sqldf("SELECT a.*,b.*,(b.ResultDate-a.ProcedureDate)as daydiff from table1 as a left join table2 as b
on a.ID=b.ID
and (-30)<=b.ResultDate-a.ProcedureDate<=(30)" )
谢谢
【问题讨论】:
-
如果日期实际上是字符串,那么您不能在 R 或 SQL 中将字符串彼此相减。首先将它们转换为 Date 类。在 R 中。另外请查看 How to Ask 和 minimal reproducible example。
标签: r date merge cartesian-product sqldf