基于与R中的另一数据集进行比较来子集数据集

时间:2015-12-15 06:44:36

标签: r

让我们说数据集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 

1 个答案:

答案 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
相关问题