假设我有一个数据集test
:
a<- c(NA,1,2)
b<- c(1,NA,2)
c<- c('not','relevant','vector')
test<-data.frame(a,b,c)
我想将列test$a
和test$b
相加,但是
test$a + test$b
返回:
[1] NA NA 4
我希望它返回:
[1] 1 1 4
由于第3个向量,带有rowSums
设置的na.rm=T
命令无效。我不想将我的特定列子集化,因为这是一个更大问题的简单情况。
答案 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
效率不高。