【问题标题】:Recoding cells with multiple race category responses into a "multiracial" response?将具有多个种族类别反应的细胞重新编码为“多种族”反应?
【发布时间】:2022-01-16 12:20:22
【问题描述】:

我正在清理一些调查数据,这些数据似乎允许受访者选择多个种族类别。我想知道如何将这些重新编码为“多种族”响应以进行分析。

现在我一直在做相当费力的手工编码,但还没有成功。这是我尝试使用 recode 将具有多个条目的每个响应转换为一个数字,然后可以使用 case_when 对其进行重新编码。

rawdat$race <- recode(rawdat$race, "White, non-Hispanic,Asian" = 1, 
  "White, non-Hispanic,American Indian or Alaska Native" = 2,
  "White, non-Hispanic,Black or African American,Asian" = 3, 
  "Black or African American,American Indian or Alaska Native" = 4, 
  "White, non-Hispanic,Hispanic" = 5,
  "Asian,Native Hawaiian or Pacific Islander" = 6,
  "White, non-Hispanic,Black or African American" = 7,
  "Black or African American,American Indian or Alaska Native,Asian,Hispanic" = 8,
  "White, non-Hispanic,Black or African American,American Indian or Alaska Native,Asian,Native Hawaiian or Pacific Islander,Hispanic" = 9,
  "Black or African American,Hispanic" = 10,
  "Black or African American,Asian" = 11, 
  "White, non-Hispanic,Native Hawaiian or Pacific Islander" =12,
  "White, non-Hispanic,Black or African American,American Indian or Alaska Native,Asian,Hispanic",
  "American Indian or Alaska Native,Hispanic" = 13)

这种方法有很多问题(我只是尝试过,因为我认为它可以作为强力的短期修复 - 它没有),我更喜欢初始化一个向量包含针对此问题呈现给受访者的每个可能值,然后将包含多个这些值的任何单元格重新编码为值“多种族”,但据我所知,recode() 函数不会接受这样的向量作为论据。关于如何完成后一种方法的任何想法?

【问题讨论】:

    标签: r dplyr data-wrangling recode


    【解决方案1】:

    看起来您要重新编码为“多种族”的单元格包含逗号 - 对吗?如果是这样,您只需要用逗号标识单元格。

    library(tidyverse)
    race <- c("White", "White, Asian", "Black or African American", "White", "White, Black or African American")
    df <- as.data.frame(race)
    df$multiracial <- ifelse(grepl(",", df$race), "Multiracial", "Not multiracial")
    df$race <- ifelse(df$multiracial == "Multiracial", "Multiracial", df$race)
    head(df$race)
    #> [1] "White"                     "Multiracial"              
    #> [3] "Black or African American" "White"                    
    #> [5] "Multiracial"
    

    编辑

    创建了一个单独的西班牙裔/非西班牙裔专栏。这可能对您的原始数据不那么干净,这取决于每个选项之间是否有一致的空格/逗号。

    library(tidyverse)
    library(stringr)
    race <- c("White, non-Hispanic", 
              "White, Asian", 
              "Black or African American", 
              "White, Hispanic, Asian", 
              "White, Black or African American",
              "White, non-Hispanic",
              "Black or African American, Hispanic")
    df <- as.data.frame(race)
    
    # original
    df$original <- df$race
    
    # create separate Hispanic/non-Hispanic column
    df$hispanic <- ifelse(grepl("non-Hispanic",df$race),"non-Hispanic", 
                          ifelse(grepl("Hispanic",df$race),"Hispanic", "Unknown"))
    
    # remove Hispanic/non-Hispanic
    df$race <- str_remove(df$race, ", non-Hispanic")
    df$race <- str_remove(df$race, ", Hispanic")
    
    # recode as multiracial
    df$multiracial <- ifelse(grepl(",", df$race), "Multiracial", "Not multiracial")
    df$race <- ifelse(df$multiracial == "Multiracial", "Multiracial", df$race)
    head(df)
    #>                        race                         original     hispanic
    #> 1                     White              White, non-Hispanic non-Hispanic
    #> 2               Multiracial                     White, Asian      Unknown
    #> 3 Black or African American        Black or African American      Unknown
    #> 4               Multiracial           White, Hispanic, Asian     Hispanic
    #> 5               Multiracial White, Black or African American      Unknown
    #> 6                     White              White, non-Hispanic non-Hispanic
    #>       multiracial
    #> 1 Not multiracial
    #> 2     Multiracial
    #> 3 Not multiracial
    #> 4     Multiracial
    #> 5     Multiracial
    #> 6 Not multiracial
    

    【讨论】:

    • 感谢您的回复!我想尝试这样的解决方案,但不幸的是,该调查不方便地将“白人”响应记录为“白人,非西班牙裔”,并在该特定字符串中留下逗号。可以调整此解决方案以适应这些数据吗?
    • 我更新了我的原始评论,并在df$race 旁边创建了一个单独的西班牙裔/非西班牙裔变量。如果我假设正确,参与者不需要选择西班牙裔或非西班牙裔,因此对于未知级别应该有灵活性。但是,此代码取决于您的原始数据,在每个单元格中的每个选项之间具有一致的间距/逗号。
    • 非常感谢您的编辑,它就像一个魅力!我发现,考虑到我的数据的特定格式,完成此任务的最简洁方法基本上是在实施原始解决方案之前简单地包含“df$race
    猜你喜欢
    • 2020-08-04
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 2021-09-07
    相关资源
    最近更新 更多