2015-10-20 186 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 + ...不是很有效。