2014-02-19 53 views
1

我想獲取最高值的列的索引。但是,我不知道如何處理缺失的值以進行正確的計算。 NA應該省略(在求和期間忽略)並且不轉換爲「0」。在數據中丟失值的列之間進行求和

x=rep(NA,3); y=c(NA,0,-1); z=c(0, rep(NA,2)) 
data=cbind(x,y,z) 

    x y z 
[1,] NA NA 0 
[2,] NA 0 NA 
[3,] NA -1 NA 

我想獲得具有最高值的列索引。在上面的例子中,它是[,3]。 但是功能

which.max(colSums(!is.na(data))) 

apply(data,2,sum, na.rm=T) 

沒有產生預期的輸出。

任何幫助表示讚賞。謝謝。

回答

2

你能確定其總和以這種方式與非缺失值的列中最大的列的列索引:

dataAvailIdx <- which(apply(data,2,function(x) any(!is.na(x)))) 
dataAvailIdx[which.max(colSums(data[,dataAvailIdx],na.rm=TRUE))] 
+0

謝謝您的回覆NAD的幫助! –

相關問題