r-使用另一个但仅为空的值通过引用更新data.table



我正在尝试使用特定列的公共id上的另一个dt2数据表来更新一些dt1的数据表。只有当dt1中特定列的值为空(NA(时,才应更新该特定列。

例如,这会更新所有内容:

dt1 <- data.table(
"id" = c(1,2,3,4),
"animal" = c("cat","cat","dog",NA)
)
dt2 <- data.table(
"id" = c(3,4),
"animal" = c("human being","duck")
)

dt1 <- dt1[dt2, on = c("id"),"animal" := .(i.animal)]

对于dt1

id   animal
1:  1      cat
2:  2      cat
3:  3      human being
4:  4      duck

当我需要时

id   animal
1:  1      cat
2:  2      cat
3:  3      dog
4:  4     duck

我们可以使用fcoalecse

library(data.table)
dt1[dt2, animal := fcoalesce(animal, i.animal), on = .(id)]

-输出

> dt1
id animal
<num> <char>
1:     1    cat
2:     2    cat
3:     3    dog
4:     4   duck

最新更新