仅在添加数字时将NA视为零

R-o*_*ert 8 r na data.table

在计算两个数据表的总和时,NA+n=NA.

> dt1 <- data.table(Name=c("Joe","Ann"), "1"=c(0,NA), "2"=c(3,NA))
> dt1
   Name  1  2
1:  Joe  0  3
2:  Ann NA NA
> dt2 <- data.table(Name=c("Joe","Ann"), "1"=c(0,NA), "2"=c(2,3))
> dt2
   Name  1 2
1:  Joe  0 2
2:  Ann NA 3
> dtsum  <- rbind(dt1, dt2)[, lapply(.SD, sum), by=Name]
> dtsum
   Name  1  2
1:  Joe  0  5
2:  Ann NA NA
Run Code Online (Sandbox Code Playgroud)

我不想取代所有NA与0我想是NA+NA=NANA+n=n得到以下结果:

   Name  1  2
1:  Joe  0  5
2:  Ann NA  3
Run Code Online (Sandbox Code Playgroud)

这是如何在R中完成的?

更新:删除dt1中的拼写错误

mne*_*nel 10

您可以定义自己的功能以根据需要进行操作

plus <- function(x) {
 if(all(is.na(x))){
   c(x[0],NA)} else {
   sum(x,na.rm = TRUE)}
 }


rbind(dt1, dt2)[,lapply(.SD, plus), by = Name]
Run Code Online (Sandbox Code Playgroud)