【发布时间】:2020-02-05 22:11:18
【问题描述】:
我试图在其他变量的某些条件下在数据集中创建一个新变量。基本上,我想简化关于父母教育的信息,即父母之间的分离,并创建一个新的信息,考虑到父母的最高教育水平。例如,如果父亲受教育程度为 1,母亲受教育程度为 0,则新变量中该行的值为 1。
我正在尝试将 mutate() 与 case_when() 函数一起使用,该函数在另一个变量中有效,但我不明白为什么现在不行。当我尝试时,它会创建一个只有 NA 的列,当我从中打印一个表时,结果是:
我用于条件的两个变量的类是“labelled”和“factor”。
首先,我尝试了以下命令(我正在简化代码):
dataset <- dataset %>%
mutate(NEW_EDUCATIONAL_VAR = case_when(MOTHER_EDUCATIONAL_VAR == '0' & FATHER_EDUCATIONAL_VAR == '0' ~ '0',
MOTHER_EDUCATIONAL_VAR == '0' & FATHER_EDUCATIONAL_VAR == '1' ~ '1')
然后,我尝试考虑具有 NA 值的情况,因为某些行中有 NA:
dataset <- dataset %>%
mutate(NEW_EDUCATIONAL_VAR = case_when(is.na(MOTHER_EDUCATIONAL_VAR) & is.na(FATHER_EDUCATIONAL_VAR) ~ '99',
MOTHER_EDUCATIONAL_VAR == '0' & FATHER_EDUCATIONAL_VAR == '1' ~ '1')
当我使用这些函数为这些案例创建一个新函数时,它起作用了。
dataset <- dataset %>% mutate(AGE_CAT = case_when(AGE >= 16 & AGE <= 18 ~ '0',
AGE >= 19 & AGE <= 24 ~ '1',
AGE >= 25 & AGE <= 29 ~ '2',
AGE >= 30 ~ '3'))
那么,我做错了什么?非常感谢。
【问题讨论】: