这是问题的继续Conditional merging tables
我有两张桌子:
Time X1 Class
8/1/2013 56 B
8/1/2013 24 A
9/1/2013 14 A
9/1/2013 46 B
10/1/2013 8 A
10/1/2013 45 A
11/1/2013 4 B
11/1/2013 63 A
12/1/2013 78 A
12/1/2013 39 B
1/1/2014 69 A
1/1/2014 26 B
Time X2 Class
8/1/2013 42 B
8/1/2013 46 A
9/1/2013 38 B
9/1/2013 44 A
10/1/2013 29 B
10/1/2013 2 B
11/1/2013 75 A
11/1/2013 6 B
12/1/2013 36 A
12/1/2013 23 B
1/1/2014 83 B
1/1/2014 126 A
如何将这两个表合并到一个表中,按" Time"并且通过" Class"但有一个条件:第一个表的月份必须与第二个月的下个月匹配 - 如第一个表格的9月份应该与第二个表格的10月份相匹配。
通过" Time"分组的解决方案仅由@David Arenburg提供:
library(data.table)
setkey(setDT(dat1)[, Time := as.Date(Time, format = "%m/%d/%Y")], Time)
setkey(setDT(dat2)[, Time := as.Date(Time, format = "%m/%d/%Y") - 1], Time)
dat2[dat1, roll = -Inf]