按组条件过滤data.table

时间:2019-11-01 09:28:06

标签: r dplyr data.table

我需要增量更新SQL数据库,因此收到以下data.table作为输入。

library(data.table)
dt1 <- data.table(Category = letters[1:4]
                  , Max.Date = rep(as.Date("2018-01-01"),4))

我现在想过滤R中的data.table以选择所有类别,这些类别在我的data.table dt2中确实有较晚的日期,但是当然,过滤应该在单个类别,因此仅按每个类别比较日期,而不是整个数据。

dt2 <- data.table(Category = letters[1:8]
                  , Max.Date = rep(as.Date("2019-01-01"),8))

所需的输出应从dt2中选择,其中最大日期大于dt1中的最大值,因此所需的输出应为:

   dt.desired 
   Category   Max.Date
1:        a 2019-01-01
2:        b 2019-01-01
3:        c 2019-01-01
4:        d 2019-01-01

因此,请从dt2中进行选择,其中每个类别的日期都比dt1中的日期大。

1 个答案:

答案 0 :(得分:2)

下面的非等号联接应该起作用

dt2[ dt1, 
     .( Category, Max.Date = x.Max.Date ), 
     on = .( Category, Max.Date > Max.Date ) ][]

应该有效,导致:

#    Category   Max.Date
# 1:        a 2019-01-01
# 2:        b 2019-01-01
# 3:        c 2019-01-01
# 4:        d 2019-01-01