R 对两列求和,忽略NA,除非两列均为NA

R 对两列求和,忽略NA,除非两列均为NA,r,sum,data.table,na,R,Sum,Data.table,Na,我试着用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 我尝试了以下方法: df$sum<-rowSums(df[,c("x", "y")], na.rm=TRUE) df$fina

我试着用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
我尝试了以下方法:

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而不是0我使用了以下内容。即使存在NA,它也会给出求和,但当所有求和元素都为NA时,它会返回NA

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

我用了下面的方法。即使存在NA,它也会给出求和,但当所有求和元素都为NA时,它会返回NA

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

这里还有两个选项:

ifelse(rowSums(is.na(df)) != ncol(df), rowSums(df, na.rm = TRUE), NA)
#[1]  2  2 NA


这里还有两个选项:

ifelse(rowSums(is.na(df)) != ncol(df), rowSums(df, na.rm = TRUE), NA)
#[1]  2  2 NA