替换data.table联接中的N / A

时间:2019-07-16 12:44:08

标签: r data.table

当连接数据表时,我希望能够替换不匹配的NA值。有没有一种方法可以一次完成所有操作?我提供了自己的两行解决方案,但我想必须有一种更简洁的方法。当我将其用于多个变量而不需要为每个变量使用一行时,这也将有所帮助。

dt1[dt2, frequency.lrs := lr, on = .(joinVariable)]
dt1[is.na(frequency.lrs), frequency.lrs := 1]

2 个答案:

答案 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)