2015-12-15 87 views
0

假设数据集1:子集基于与另一个数据R中设定比较数据集

ID ITEM SEQ TRANS_DATE  EXPIRE_DATE 
    1 2002 3 2014-11-27  2015-08-27 
    1 2002 4 2015-08-27  2016-08-27 
    2 1003 2 2014-11-27  2015-07-03 
    2 1003 3 2015-07-03  2016-07-03 
    2 1003 4 2015-08-03  2016-07-03 

假设数据集2:

ID ITEM SEQ TRANS_DATE  EXPIRE_DATE 
    1 2002 3 2014-11-27  2015-08-27 
    2 1003 2 2014-11-27  2015-07-03 

如何子集数据组1基于在数据集2上? 虽然由不同的ID,ITEM组,SEQ大于数据集2中的数据吗? 结果会是这样:

ID ITEM SEQ TRANS_DATE  EXPIRE_DATE 

    1 2002 4 2015-08-27  2016-08-27 
    2 1003 3 2015-07-03  2016-07-03 
    2 1003 4 2015-08-03  2016-07-03 

回答

0

尝试

library(data.table) 
setDT(df1, key='ID') 
setDT(df2, key='ID') 
i1 <- df1[df2, .I[SEQ > i.SEQ] ,by=.EACHI]$V1 
df1[i1] 
# ID ITEM SEQ TRANS_DATE EXPIRE_DATE 
#1: 1 2002 4 2015-08-27 2016-08-27 
#2: 2 1003 3 2015-07-03 2016-07-03 
#3: 2 1003 4 2015-08-03 2016-07-03 

或者

setDT(df1)[df1[df2[c(1,3)], SEQ> i.SEQ, on = 'ID']] 
# ID ITEM SEQ TRANS_DATE EXPIRE_DATE 
#1: 1 2002 4 2015-08-27 2016-08-27 
#2: 2 1003 3 2015-07-03 2016-07-03 
#3: 2 1003 4 2015-08-03 2016-07-03