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



>假设我有一个数据集,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

由于第三个向量,具有na.rm=T设置的 rowSums 命令将不起作用。我不想对我的特定列进行子集化,因为这是一个更大问题的简单案例。

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

如果你想要所有数字列的总和,请:

rowSums(test[,sapply(test,is.numeric)],na.rm = T)
[1] 1 1 4

我知道这子集了所有数字列,但是如果您有 50 个数字列和其他几个非数字列,那么执行test$col1 + test$col2 + ...效率不是很高。

最新更新