r - 使用 data.table 进行非等连接时重命名连接变量
问题描述
我想在两个 s 之间进行非 equi 连接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 包(v0.3.0)于 2019 年 12 月 26 日创建
解决方案
推荐阅读
- android - SQLiteBlobTooBigException 用于小数据查询
- .net - VB 从 SQL Server 读取数据到数组,写入 .CSV
- java - 避免检查中间对象的空值
- javascript - 范围属性未应用于环回模型
- linux - 有没有办法将 linux 调度程序锁定在特定的 pthread 上?
- ruby-on-rails - Rails Net::SFTP - 有没有办法使用 FTP 连接(而不是 sFTP)?
- excel - 确定用户是否有 OneDrive 并相应地更改文件路径
- sed - 从 Ansible 执行命令时出现语法错误
- r - 如何在R中的字符串中为连续单词添加前缀
- reactjs - 如何生成 oauthSignature?