我想在两个data.table
之间进行非等额联接(以下示例)。有没有一种方法可以重命名on
参数中的联接变量?
我尝试了以下操作,但没有产生预期的列名(initial_date
和final_date
)。我知道我可以使用data.table::setnames()
重命名变量。
library(data.table)
dt1 <- data.table(id = c("a", "b"),
initial_date = as.Date(c("2019-01-01", "2019-02-01")),
final_date = as.Date(c("2019-02-01", "2019-03-01")))
dt2 <- data.table(id = c("a", "a", "b", "b"),
x = c(1, 2, 3, 4),
date = as.Date(c("2019-01-01", "2019-01-04", "2019-02-03", "2019-02-19")))
dt2[dt1,
.(x = sum(x)),
on = .(id, initial_date = date >= initial_date, final_date = date <= final_date),
by = .EACHI]
#> id date date x
#> 1: a 2019-01-01 2019-02-01 3
#> 2: b 2019-02-01 2019-03-01 7
由reprex package(v0.3.0)于2019-12-26创建