2015-10-20 179 views
0

说我有一个数据集,test内总结特定载体:如何将数据集R中忽略NA值

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 

rowSums命令与na.rm=T设置将不起作用,因为第3个向量。我不想将我的专栏列入子集,因为这是一个更大问题的简单例子。

+1

你不想要这个? 'rowSums(cbind(test $ a,test $ b),na.rm = TRUE)' –

+0

@RonakShah可以工作! – colin

+1

或更简洁的'rowSums(test [,1:2],na.rm = T)' –

回答

1
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

根据上面的@colonel beauvel的评论,您应该更正您的答案。为什么要提取数据框的列只是通过'cbind'把它们粘在一起? –

+0

@stasg是,更新了答案 –

1

如果你想所有的数字做列的总和:

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

[1] 1 1 4 

我知道,这个子集是数字中的所有列,但如果你有50个数字列和其他几个非数字然后做test$col1 + test$col2 + ...不是很有效。