处理 R 中许多响应包含多个类别的分类数据的最佳方法是什么?

What is the best way to deal with categorical data in R where many response includes multiple categories?

我正在处理一个数据集,其中受访者通过在 R 中选择一个或多个种族类别来表明他们的种族。在我的数据集中,类别记录如下:1 = 亚洲人,2 = 阿拉伯人,3 = 黑人, 4 = 拉丁裔,5 = 美洲原住民,6 = 太平洋岛民/夏威夷原住民,7 = 白人,8 = 其他,9 = 不想回答。许多受访者指出了多个类别。例如:

race <- c('1', '2', '5', '1,5')

我正在尝试使用 dplyr 的重新编码功能将数字更改为每个种族的实际名称。

race <- dplyr::recode(race, '1'='Asian', '2'='Arab', '3'='Black', '4'='Latinx','5'='American Indian', '6'='Pacific Islander/Native Hawaiian','7'='White', '8'='Other/None', '9'='Prefer Not to Answer')

但是,我不知道如何处理输入多个种族的受访者。例如,使用我使用的代码,选择亚洲人 (1) 和白人 (5) 的人将显示为“1,5”而不是“亚洲人,白人”。我的输出看起来像这样。

[1] "Asian"           "Arab"            "American Indian" "1,5"   

我的最终目标是将所有数值分类变量更改为每个组的实际名称,以使我的输出更易于阅读。我希望它看起来像这样。

[1] "Asian"           "Arab"            "American Indian" "Asian,White"  

最好的方法是什么?

race_text <- stringr::str_replace_all(race, c('1'='Asian', '2'='Arab', 
                                      '3'='Black', '4'='Latinx', '5'='American Indian', 
                                      '6'='Pacific Islander/Native Hawaiian',
                                      '7'='White', '8'='Other/None', '9'='Prefer Not to Answer'))

> race_text
[1] "Asian"                 "Arab"                  "American Indian"       "Asian,American Indian"