首页 > 解决方案 > 如何使用另一个变量的条件重新编码变量中的类别

问题描述

我有两个变量 - 婚姻状况(单身、已婚、离婚)和年龄(连续)。婚姻状况有很多NA

我想在“婚姻状况”变量中将那些缺少婚姻状况 (NA) 且年龄 <15 岁的人重新编码为单身。

我已经尝试过使用 dplyr 但没有成功

leanersharp %>% mutate(Marital.Status = case_when(Marital.Status== NA & Age <15 ~ 'Single'))

标签: rdataframedata-cleaningdplyr

解决方案


您可以直接分配 -

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

如果你想使用dplyrcase_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

推荐阅读