使用data.table进行非等额联接时重命名联接变量

时间:2019-12-26 18:18:06

标签: r data.table

我想在两个data.table之间进行非等额联接(以下示例)。有没有一种方法可以重命名on参数中的联接变量?

我尝试了以下操作,但没有产生预期的列名(initial_datefinal_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创建

0 个答案:

没有答案