【发布时间】:2021-09-24 14:02:58
【问题描述】:
我有一个数据集,其中种族/民族变量分布在多个列中 - 个人可以选择多个类别,但如果他们属于某个类别,我想将他们分组。
例如,如果某人选择了东南亚和南亚两个类别,则新类别会将该人标记为“亚洲人”。同样,如果他们选择古巴人和墨西哥人,我会给他们贴上“西班牙裔/拉丁裔”的标签。但是,如果有人选择东南亚和古巴人,我想将他们标记为多种族。我有 20 多个个人可以做出的选择,并希望将它们组合成更大的类别:亚洲人、黑人、白人、西班牙裔/拉丁裔等。
data <- data.frame(race_se_asian = c(0,1,1,0,0,0,1,0,0,0,0),
race_south_asian = c(0,l,0,0,1,0,1,0,0,0),
race_european = c(1,0,1,0,0,0,0,0,0,0),
race_cuban = c(1,0,1,0,0,0,0,0,0,0),
race_mexican = c(1,0,1,0,0,0,0,0,0,0))
我还创建了一个“总类别”列,用于计算每个人所做选择的数量。
有没有一种简单的方法可以使用 case_when 或 for 循环来做到这一点?
【问题讨论】:
-
我建议您创建第二个数据框,其中包含种族/民族和群体之间的对应关系。然后使用匹配算法。
标签: r dataframe for-loop dplyr case-when