让我们说数据集1:
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
如何根据数据集2对数据集1进行子集化? 虽然通过不同的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 :(得分: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