我有一个数据框,其中一些列为“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
我确定只有数字列中存在缺失值,为什么会出现此错误?
更重要的是,如何使用各自的列中位数填充每列中的缺失值?
答案 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)
}
}