r-在=上使用data.table中的函数.()加入时的参数



我以为data.table会接受带有on=.()参数中函数的参数,因为by=.()接受函数,但似乎没有。

这是我想做的。

# DT1 has "date" column and DT2 has "datadate", "month" column 
DT1[DT2, on = .( year(date) = year(datadate))]
# or
DT1[DT2, on = .( year(date) <= year(datadate), month(date) = month)]

有没有一种简洁的方法可以快速实现上面的内容?

下面是一个基于"年;用year()从两个不同名称的日期列中提取,并在两个data.table的的j索引中计算

IMO这并不像你的#1那么漂亮,但它不起作用,但也许它能让你更接近你想要的。

library(data.table)
DT1 <- data.table(date = strftime(c("2020-01-01","2019-01-02"), "%Y-%m-%d"), x = c(1,2))
DT2 <- data.table(datadate = strftime(c("2020-01-01","2019-01-02","2020-02-03","2019-03-04"), "%Y-%m-%d"), y = 3:6)
DT1[,year := year(date)][DT2[, year := year(datadate)], on = list(year = year)]
#>          date x year   datadate y
#> 1: 2020-01-01 1 2020 2020-01-01 3
#> 2: 2019-01-02 2 2019 2019-01-02 4
#> 3: 2020-01-01 1 2020 2020-02-03 5
#> 4: 2019-01-02 2 2019 2019-03-04 6

由reprex包(v0.3.0(创建于2020-12-06

最新更新