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

Fill missing values in dataframe columns with column median in R

我有一个数据框,其中一些列的类型为 "factor",其他列的类型为 "numeric"。在任何 "factor" 列中都没有缺失值。

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

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

我确定只有数字列中存在缺失值,为什么会出现此错误?

更重要的是,如何用各自的列中位数填充每列中的缺失值?

即使 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)
  }
}