首页 > 解决方案 > 使用 data.table 进行非等连接时重命名连接变量

问题描述

我想在两个 s 之间进行非 equi 连接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 包(v0.3.0)于 2019 年 12 月 26 日创建

标签: rdata.table

解决方案


推荐阅读