我想获得具有最高值的列的索引。但是,我不知道如何处理缺失值以进行正确的计算。应省略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)
不生成预期的输出。
任何帮助表示赞赏。 THX。
答案 0 :(得分:2)
您可以通过这种方式确定具有非缺失值的列中总和最大的列的列索引:
dataAvailIdx <- which(apply(data,2,function(x) any(!is.na(x))))
dataAvailIdx[which.max(colSums(data[,dataAvailIdx],na.rm=TRUE))]