我發現這個功能在任何給定的數據幀,以檢測缺失值的比例爲每列中的所有變量:刪除與超過30%的缺失值
propmiss <- function(dataframe) lapply(dataframe,function(x) data.frame(nmiss=sum(is.na(x)), n=length(x), propmiss=sum(is.na(x))/length(x)))
我將其分配給一個變量是這樣的:
propmissdf <- propmiss(df)
然後我遍歷數據幀爲NULL變量在我的數據是這樣的:
for(i in (1:length(df))){
var = names(df)[i]
if((propmissdf[[var]][[3]]) > 0.3) { #the 3 index represents the proportion inside propmissdf
df[var] <- NULL
}
}
這給我一個錯誤:
Error in if ((propmissdf[[var]][[3]]) > 0.3) { :argument is of length zero
但它的作品,莫名其妙。它除掉了幾個大於0.3的缺失值的變量,但是如果我再次運行for循環,它會消除更多的直到3或4次,直到它擺脫所有變量。這是爲什麼發生?請隨時糾正我的問題,或想出一個更好的方法來消除30%以上的變量。
你會怎樣在這之後0.3調零變量取? – jgozal
@jgozal,你只需重新分配輸出:'df < - df [colSums(is.na(df))/ nrow(df)<.3]'。 – A5C1D2H2I1M1N2O1R2T1