我需要增量更新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
中的日期大。
答案 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