当连接数据表时,我希望能够替换不匹配的NA值。有没有一种方法可以一次完成所有操作?我提供了自己的两行解决方案,但我想必须有一种更简洁的方法。当我将其用于多个变量而不需要为每个变量使用一行时,这也将有所帮助。
dt1[dt2, frequency.lrs := lr, on = .(joinVariable)]
dt1[is.na(frequency.lrs), frequency.lrs := 1]
答案 0 :(得分:4)
您可以在与dt2联接之前创建(并填充)值为{1的列frequency.lrs
,然后使用update join来仅替换匹配行上的frequency.lrs。
dt1[, frequency.lrs := 1][dt2, frequency.lrs := lr, on = .(joinVariable)]
答案 1 :(得分:0)
另一个选择:
dt1[, VAL :=
dt2[dt1, on=.(ID), replace(VAL, is.na(VAL), 1)]
]
输出:
ID VAL
1: 1 3
2: 2 1
数据:
library(data.table)
dt1 <- data.table(ID=1:2)
dt2 <- data.table(ID=1, VAL=3)