我想在两个data.table上执行非equi连接,其中与第一个data的两列之和进行比较。表:
set.seed(2018)
DT1 <- data.table(ID =seq(10), X= round(500*runif(10)), Y= round(500*runif(10)));DT1
DT2 <- data.table(ID =seq(10), X_min =seq(0,900,100), X_max =seq(99,999,100), Text=LETTERS[1:10] );DT2
现在,我想加入DT2
中与[X_min, X_max]
的总和X+Y
所在的时间间隔DT1
相对应的文字。我可以这样做:
DT1[, Z :=X+Y]
DT1[DT2, Description:=i.Text, on =.(Z>=X_min, Z<= X_max)]
是否可以避免明确计算Z
?这失败了:
DT1[DT2, Description:=i.Text, on =.((X+Y)>=X_min, (X+Y)<= X_max)]