只有在添加数字时,才将NA视为零 [英] Treat NA as zero only when adding a number
本文介绍了只有在添加数字时,才将NA视为零的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
计算两个数据表的总和时, NA + n = NA
。
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
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
我不想用0代替所有NA。我想要的是 NA + NA = NA
和 NA + n = n
以获得以下结果:
I don't want to substitute all NA's with 0. What I want is NA+NA=NA
and NA+n=n
to get the following result:
Name 1 2
1: Joe 0 5
2: Ann NA 3
在R中如何做?
UPDATE:在dt1中删除拼写错误
推荐答案
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]
这篇关于只有在添加数字时,才将NA视为零的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文