Мы можем преобразовать его в символ, а затем replace
значение
library(dplyr)
df_factor %>%
mutate_all(funs(replace(as.character(.), is.na(.), "some_value")))
Если вы хотите преобразовать его обратно в factor
df_factor %>%
mutate_all(funs(factor(replace(as.character(.), is.na(.), "some_value"))))
Или если мы хотимиспользуйте df
напрямую вместо df_factor
df %>%
mutate_if(is.factor, funs(factor(replace(as.character(.), is.na(.), "some_value"))))
Добавление воспроизводимого примера для проверки
df <- data.frame(col1 = c(NA, letters[1:5]), col2 = c(1:5, NA),
col3 = c(NA, letters[14:17], NA))
df
# col1 col2 col3
#1 <NA> 1 <NA>
#2 a 2 n
#3 b 3 o
#4 c 4 p
#5 d 5 q
#6 e NA <NA>
df %>%
mutate_if(is.factor, funs(factor(replace(as.character(.), is.na(.), "some_value"))))
# col1 col2 col3
#1 some_value 1 some_value
#2 a 2 n
#3 b 3 o
#4 c 4 p
#5 d 5 q
#6 e NA some_value