对 R 中的两列求和,使得 NA+NA=NA,但 NA+(一个数字)=0+(一个数字)



我在R中有一个数据帧,它由NA和数字组成。它看起来像这样:

a  b
1  1  3
2 NA NA
3  3  2
4 NA  1
5  4 NA

我希望能够对这个数据帧中的两列求和,以便 NA+NA=NA,但是当它与数字求和时,NA 应被视为 0。例如,上述数据帧中的"a"和"b"的总和应如下所示:

sum
1   4
2  NA
3   5
4   1
5   4

有谁知道我会怎么做?

我们可以将rowSumsna.rm = TRUE一起使用来删除 NA,同时对行进行求和。 确保将所有NAs行更改为 NA

v1 <- unname(rowSums(df1, na.rm = TRUE)* NA^(rowSums(is.na(df1))==2))
data.frame(Sum = v1)
# Sum
#1   4
#2  NA
#3   5
#4   1
#5   4

或者applysum_

library(hablar)
as.vector(apply(df1, 1,  sum_))
#[1]  4 NA  5  1  4

数据

df1 <- structure(list(a = c(1L, NA, 3L, NA, 4L), b = c(3L, NA, 2L, 1L, 
NA)), class = "data.frame", row.names = c("1", "2", "3", "4", 
"5"))

最新更新