R - data.table滚动连接混淆

时间:2014-07-22 15:16:20

标签: r data.table

我在使用data.table实现滚动连接时遇到了一些麻烦。

我有两张桌子

m<-data.table(PolicyNo=rep(1709119, 4), EFDT=as.Date(c("2013-02-01","2014-02-01", "2012-3-1", "2011-3-1")))
setkey(m,"PolicyNo","EFDT")
m
   PolicyNo       EFDT
1:  1709119 2011-03-01
2:  1709119 2012-03-01
3:  1709119 2013-02-01
4:  1709119 2014-02-01

p<-data.table(PolicyNo=rep(1709119, 2), EFDT=as.Date(c("2013-02-01", "2012-1-1")))
setkey(p,"PolicyNo","EFDT")
p
   PolicyNo       EFDT
1:  1709119 2012-01-01
2:  1709119 2013-02-01

p中的EFDT是“正确的”EFDT(即我想保留的日期)。我想基于匹配的策略编号加入m,并将m中的EFDT向后滚动到p中的第一个匹配的EFDT。在此示例中,结果应为

result
   PolicyNo       EFDT     EFDT.m
1:  1709119 2012-01-01 2012-03-01
2:  1709119 2013-02-01 2013-02-01
3:  1709119 2013-02-01 2014-02-01

我试过

m[, EFDT.m := EFDT]
m[p, roll=-Inf, nomatch=0]

没有运气。

1 个答案:

答案 0 :(得分:2)

将新列添加到p而不是m,因为您需要相反的联接:

p[, EFDT.copy := EFDT]

p[m, roll = Inf]
#   PolicyNo       EFDT  EFDT.copy
#1:  1709119 2011-03-01       <NA>
#2:  1709119 2012-03-01 2012-01-01
#3:  1709119 2013-02-01 2013-02-01
#4:  1709119 2014-02-01 2013-02-01

NA中添加一些过滤并重命名列,您将全部设置完毕。