Как перекодировать категорию внутри переменной, используя условие другой переменной

avatar
user16597745
8 августа 2021 в 17:21
29
1
-1

У меня есть две переменные - Семейное положение (холост, женат, разведен) и Возраст (непрерывно). Семейное положение имеет много NA

Я хочу перекодировать лиц с отсутствующим семейным положением (NA) и в возрасте <15 лет как одиноких в переменной «Семейное положение».

Я пробовал это с помощью dplyr, но безуспешно

leanersharp %>% mutate(Marital.Status = case_when(Marital.Status== NA & Age <15 ~ 'Single'))
Источник
Ronak Shah
9 августа 2021 в 01:18
0

Было бы легче помочь, если бы вы создали небольшой воспроизводимый пример вместе с ожидаемым результатом. Прочтите о как привести воспроизводимый пример.

Ответы (1)

avatar
Ronak Shah
9 августа 2021 в 01:24
0

Вы можете выполнить прямое назначение -

df$Martial_Status[df$Age < 15 & is.na(df$Martial_Status)] <- 'Single'

#  Age Martial_Status
#1  10         Single
#2  23         Single
#3  34        Married
#4  45       Divorced

Если вы хотите использовать dplyr и case_when -

df <- df %>%
  mutate(Martial_Status = case_when(Age < 15 & is.na(Martial_Status) ~ 'Single', 
                                    TRUE ~ Martial_Status))

данные

Легче помочь, если вы предоставляете данные в воспроизводимом формате.

df <- data.frame(Age = c(10, 23, 34, 45), 
                 Martial_Status = c(NA, 'Single', 'Married', 'Divorced'))
df

#  Age Martial_Status
#1  10           <NA>
#2  23         Single
#3  34        Married
#4  45       Divorced