Вот решение, которое может работать для вас.
Полный код:
# load library
library(tidyverse)
# create the sample dataframe
df <- tribble(~city, ~zipcode,
'NYC',11211,
'DC',20910,
'NYC', 11104,
NA, 11106,
NA, 2008,
NA, 60614)
# change the NAs to the appropriate values
df <- df %>%
mutate(
city = case_when(
str_sub(zipcode, 1, 1) == '1' ~ 'NYC',
str_sub(zipcode, 1, 1) == '2' ~ 'DC',
str_sub(zipcode, 1, 1) == '6' ~ 'Chicago',
TRUE ~ city
)
)
# convert everything to factors
df <- df %>%
mutate(
city = as.factor(city),
zipcode = as.factor(zipcode)
)
#preview the output
glimpse(df)
Вывод функции glimpse ():
Observations: 6
Variables: 2
$ city <fct> NYC, DC, NYC, NYC, DC, Chicago
$ zipcode <fct> 11211, 20910, 11104, 11106, 2008, 60614
ТрюкЯ использовал сначала сохранить все как строку или число, заполнить пропущенные значения, а затем преобразовать в множитель.