我在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
有谁知道我会怎么做?
我们可以将rowSums
与na.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
或者apply
和sum_
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"))