Скажите, что ваш фрейм данных называется df
, а столбец, который вы хотите "исправить", называется df$x
.Вы можете сделать следующее.
Вы должны выполнить разбор, а затем преобразовать в числовое значение.Это даст вам NA для всех строк символов, которые нельзя объединить в числа.
nums <- as.numeric(as.character(df$x))
Как отметил Ричи Коттон, существует «более эффективный, но трудный для запоминания» способ преобразования факторов в числовые
nums <- as.numeric(levels(df$x))[as.integer(df$x)]
Чтобы получить среднее значение, вы используете mean()
, но передаете na.rm = T
m <- mean(nums, na.rm = T)
Назначьте среднее для всех значений NA.
nums[is.na(nums)] <- m
Вы можете заменить старые данные, но я не рекомендую это.Вместо этого просто добавьте новый столбец
df$new.x <- nums