2017-12-11 2 views
0

"factor"型の列と "numeric"型のデータフレームがあります。いずれの「因子」列にも欠損値はありません。データフレーム列の欠損値をRの列中央値で塗りつぶします

私は次のコードを使用して、列の中央値で各列の欠損値を置き換えるためにしようとしています:私はエラーを取得していますが

for(i in 1:ncol(df3)){ 
    df3[is.na(df3[,i]), i] <- median(df3[,i], na.rm = TRUE) 
} 

を:

Error in median.default(df3[, i], na.rm = TRUE) : need numeric data 

私は行方不明であることを確信しています値は数値列でのみ表示されますが、なぜこのエラーが発生しますか?

さらに重要なことに、各列の欠損値を列の中央値でどのように埋めるのですか?

答えて

1

df3[is.na(df3[, i]), i]に行がない場合でも、Rは依然としてRHS median(df3[,i], na.rm = TRUE)を計算する必要があります。小数点以下の桁の値を置き換えるだけのチェックを追加することもできます。

for(i in seq_along(df3)) { 
    if (is.numeric(df3[, i])) { 
    df3[is.na(df3[, i]), i] <- median(df3[, i], na.rm = TRUE) 
    } 
} 
関連する問題