我有一个包含多个列的数据集,对于每一列,我想找到一个阈值,使NA计数在1010-1020之间。以下是我尝试编码的方式。以下是数据的示例。
X1 X2 X3
1.51 0.00 0.00
0.31 3.90 0.00
0.64 13.64 0.00
0.26 9.66 0.00
0.36 0.04 0.00
0.51 0.03 0.00
0.30 0.08 0.02
0.01 0.20 0.04
0.02 0.03 0.00
0.00 0.47 0.00
0.00 1.44 5.54
0.00 2.68 0.74
0.03 0.68 5.49
1.72 0.08 1.54
threshold=seq(0.5,by=0.1,5)
for (j in threshold){
for (i in 1:3){
data[,i]=ifelse(data[,i]> j,data[,i],NA)
if((sum(is.na(data[,i]))==range(2,4)) {break
}
}}
答案 0 :(得分:0)
好的,我就是这样做的。
threshold <- rep(NA,50)
for (i in 3:50){
# Find the number of current NAs
nNA <- sum(is.na(pred[,i]))
# Find the 1015th smallest value (minus the number of NAs you already have)
threshold[i] <- sort(pred[,i])[1015 - nNA]
pred[pred[,i] < threshold[i],i] <- NA
}
编辑:已更改以适应所有新要求。