如何在数据集中对特定向量求和,忽略R中的NA值

时间:2015-10-20 15:00:28

标签: r

假设我有一个数据集test

a<- c(NA,1,2)
b<- c(1,NA,2)
c<- c('not','relevant','vector')
test<-data.frame(a,b,c)

我想将列test$atest$b相加,但是

test$a + test$b 返回:

[1] NA NA  4

我希望它返回:

[1] 1 1  4
由于第3个向量,带有rowSums设置的na.rm=T命令无效。我不想将我的特定列子集化,因为这是一个更大问题的简单情况。

2 个答案:

答案 0 :(得分:2)

rowSums(cbind(test$a,test$b), na.rm=TRUE)

#[1] 1 1 4

或者根据@Colonel Beauvel的评论,这里不需要cbind。你可以直接使用 -

rowSums(test[,1:2], na.rm=T)

#[1] 1 1 4

答案 1 :(得分:1)

如果您想要所有数字列的总和:

base 10

我知道这会将所有列都设置为数字,但如果您有50个数字列和其他几个非数字列,那么执行rowSums(test[,sapply(test,is.numeric)],na.rm = T) [1] 1 1 4 效率不高。