使用R中的列中位数填充数据框列中的缺失值

时间:2017-12-11 23:50:44

标签: r dataframe missing-data

我有一个数据框,其中一些列为“factor”,其他列为“numeric”。任何“因子”列中都没有缺失值。

我正在尝试使用以下代码替换每列中的缺失值:

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 个答案:

答案 0 :(得分: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)
  }
}