R-数据表滚动连接混淆
使用data.table实现滚动联接时遇到一些问题 我有两张桌子R-数据表滚动连接混淆,r,data.table,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: 170
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
我试过了
m[, EFDT.m := EFDT]
m[p, roll=-Inf, nomatch=0]
运气不好。将新列添加到
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
p[,EFDT.copy:=EFDT]
p[m,roll=Inf]
#PolicyNo EFDT EFDT.copy
#1: 1709119 2011-03-01
#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
中添加一些筛选和列重命名,您就可以全部设置了。为什么您想要的结果有3行而不是2行(p
中的行数)?m
中的@eddi第3行和第4行应该与p
中的第2行匹配,因为它们有匹配的策略号,并且它们的EFDT(在m
中)向后滚动时最接近2013-02-01。简单的例子——假设你有一张营销活动表和一张产品销售表。在本例中,您希望根据销售发生的日期将每个产品销售与每个营销活动相匹配,并向后滚动到最近的营销活动。每个活动可以与多个销售挂钩。
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