【问题标题】:How to recode ordinal variable?如何重新编码序数变量?
【发布时间】:2021-01-15 14:02:13
【问题描述】:

我正在使用来自世界价值观调查的调查数据,我使用下面的代码将我的变量从数字更改为有序变量

renameddata$Education= ordered(renameddata$Education, levels =c(-2,-1,840001,840002,840003,
                                         840004,840005,840006,840007,
                                         840008,840009),
        labels = c("NA","NA","LessHighSchool","SomeHighSchool",
                   "GED","SomeCollege","Associates","Bachelors",
                   "Masters","Professional","Doctorate"))

但是,现在我想重新编码教育变量,使 LessHighSchoolSomeHighSchool 成为一个,例如 "NO GED",并且使 SomeCollegeAssociatesBachelors 成为 "Undergraduate" 等。

【问题讨论】:

    标签: r recode


    【解决方案1】:

    或者,如果您想重新编码创建的因子变量,您可以使用forcats 包中的fct_collapse

    输入:

    renameddata <- data.frame(Education = c(-2, -1, 840001, 840002, 840003, 840004, 840005, 840006, 840007, 840008, 840009))
    
    renameddata$Education = ordered(renameddata$Education,
                                    levels = c(-2, -1, 840001, 840002, 840003, 840004, 840005, 840006, 840007, 840008, 840009),
                                    labels = c("NA", "NA", "LessHighSchool", "SomeHighSchool", "GED", "SomeCollege", "Associates", "Bachelors", "Masters", "Professional", "Doctorate"))
    

    重新编码:

    library(forcats)
    renameddata$Education <- fct_collapse(renameddata$Education,
                                          "NO GED" = c("LessHighSchool", "SomeHighSchool"),
                                          "Undergraduate" = c("SomeCollege", "Associates", "Bachelors"))
    

    给予:

           Education
    1             NA
    2             NA
    3         NO GED
    4         NO GED
    5            GED
    6  Undergraduate
    7  Undergraduate
    8  Undergraduate
    9        Masters
    10  Professional
    11     Doctorate
    

    【讨论】:

      【解决方案2】:

      这个怎么样:

      library(dplyr)
      renameddat <- renameddat %>% mutate(Education = 
              case_when(
                Education %in% c(840001,840002) ~ "No GED", 
                Education == 840003 ~ "GED", 
                Education %in% c(840004,840005,840006) ~ "Undergraduate", 
                Education %in% c(840007,840008,840009) ~ "Graduate", 
            TRUE ~ NA_character_), 
      Education=factor(Education, 
                       levels=c("No GED", "GED", "Undergraduate", "Graduate")))
      
      

      【讨论】:

      • 嗨,谢谢,但是当我运行代码时遇到问题,它显示
      • 错误:意外的 ')' 在:“教育 = 因素(教育,级别 = c(“没有 GED”,“GED”,“本科”,“研究生”)))“> 教育 % in% c(840001,840002) ~ "No GED", 错误: 意外',' in " Education %in% c(840001,840002) ~ "No GED"," > Education == 840003 ~ "GED",
      • @Varuna99 抱歉,括号放错了位置。我编辑了答案,所以它现在应该可以工作了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多