我希望你能帮我翻译一下使用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中的EFDTs是“正确”的EFDTs(即我想保留的日期)。 我想根据匹配的政策号将m与p连接起来,并将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]
没有运气。
m
中的第3行和第4行应该与p
中的第2行匹配,因为它们具有相同的保单号,并且它们的EFDT(在m
中)在向后滚动时最接近2013-02-01。简单的例子-假设您有一个营销活动表和一个产品销售表。在这种情况下,您需要根据销售发生的日期将每个产品销售与最近的营销活动匹配。每个活动可以与多个销售相关联。 - Ben