所有NA的rowSums

时间:2015-11-12 13:02:32

标签: r

df <- data.frame(a = c(1, 1, NA, 0, 1, 0),
                 b = c(0, 1, NA, NA, 0, 1),
                 c = c(NA, 0, NA, 0, 1, NA),
                 d = c(1, NA, NA, 1, 1, 0))

rowSums(df)
#[1] NA NA NA NA  3 NA
rowSums(df, na.rm=T)
#[1] 2 2 0 1 3 1

我得到的第一个,但我的假设和希望是第三个观察将返回NA。有没有办法让它返回NA进行第三次观察?

2 个答案:

答案 0 :(得分:3)

这是一个选项:

rowSums(df, na.rm = TRUE) * NA ^ (rowSums(!is.na(df)) == 0)
# [1]  2  2 NA  1  3  1

这使用R中的anything ^ 0等于1。

答案 1 :(得分:0)

不是最佳解决方案,但

a<-rowSums(df,na.rm=T)
a[a==0 & is.na(rowSums(df))]<-NA 

应该有效