Treat NA as zero only when adding a number

前端 未结 2 698
栀梦
栀梦 2020-12-30 12:26

When calculating the sum of two data tables, NA+n=NA.

> dt1 <- data.table(Name=c(\"Joe\",\"Ann\"), \"1\"=c(0,NA), \"2\"=c(3,NA))
> dt1
         


        
2条回答
  •  感动是毒
    2020-12-30 13:16

    You can define your own function to act as you want

    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]
    

提交回复
热议问题