【问题标题】:Fill missing values in dataframe columns with column median in R用R中的列中位数填充数据框列中的缺失值
【发布时间】:2017-12-11 23:50:44
【问题描述】:

我有一个数据框,其中包含一些类型为“因子”和其他类型为“数字”的列。任何“因子”列中都没有缺失值。

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

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

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

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

【问题讨论】:

    标签: r dataframe missing-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)
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-24
      • 2022-01-17
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 2018-12-17
      • 2015-12-03
      • 1970-01-01
      相关资源
      最近更新 更多