首页 > 解决方案 > 对 2 列求和,忽略 NA,除非两者都是 NA

问题描述

我尝试将 2 列与一些NA. 有很多论坛问题,例如我的第一个问题:如何求和和忽略NA,但现在我确实希望它NA在两列都NA在特定行中时返回。这是一个例子:

  df<-data.table(x = c(1,2,NA),
                 y = c(1,NA,NA))
> df
  x  y
  1  1
  2 NA
 NA NA

我想要这个:

  x  y final
  1  1   2
  2 NA   2
 NA NA   NA

我尝试了以下方法:

df$sum<-rowSums(df[,c("x", "y")], na.rm=TRUE)
  df$final<-ifelse (is.na(df$x) && is.na(df$y) , NA,
                              ifelse (is.na(df$x) | is.na(df$y), df$sum,
                                      ifelse (!is.na(df$x) && !is.na(df$y), df$sum)))

但这并没有返回我想要的..有人可以帮我..吗?

注意:有人说这是重复的,因为我要求忽略 NA,但这些问题并没有回答我的主要问题:2 x 应该如何NA让我NA而不是 0

标签: rsumdata.tablena

解决方案


我用了以下。即使有 NA,它也会给出总和,但当所有求和的元素都是 NA 时返回 NA。

rowSums(df, na.rm = TRUE) * NA ^ (rowSums(!is.na(df)) == 0)

推荐阅读