When calculating the sum of two data tables, NA+n=NA.
NA+n=NA
> dt1 <- data.table(Name=c(\"Joe\",\"Ann\"), \"1\"=c(0,NA), \"2\"=c(3,NA)) > dt1
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]