Все функции tidyverse
возвращают измененный фрейм данных, они не изменяют его на месте, поэтому вам необходимо присвоить значение при его возврате. Если мы сделаем пример dataframe:
df <- structure(list(mpg = c(21, 21, 22.8, 21.4, NA, NA), cyl = c(6,
6, 4, 6, 8, 6)), class = "data.frame", row.names = c(NA, -6L))
mpg cyl
1 21.0 6
2 21.0 6
3 22.8 4
4 21.4 6
5 NA 8
6 NA 6
Мы можем заменить NA несколькими способами:
df <- df %>%
replace_na(list(mpg = 'unknown'))
df <- df %>%
mutate(mpg = ifelse(is.na(mpg), 'unknown', mpg))
Оба из которых возвращают одно и то же:
df
mpg cyl
1 21 6
2 21 6
3 22.8 4
4 21.4 6
5 unknown 8
6 unknown 6
Вы также можете использовать базу R:
df[is.na(df)] <- 'unknown'
Осторожно: существует риск для этого: каждая переменная во фрейме данных может иметь только один тип (т. Е. numeric
, logical
, character
). Добавление значений character
к этим переменным приведет к преобразованию всей переменной в character
, что может вызвать проблемы при попытке выполнить численные вычисления в будущем. Вот почему специальное значение NA
настоятельно предпочтительнее других значений для идентификации отсутствующих данных.