如何在R中将多列二进制种族数据合并为分类新列?
R中自动化合并种族分类列的方法
你可以用以下两种方法快速生成目标列,适配数百行数据的批量处理:
1. 基础R方法(无需额外安装包)
先构造示例数据方便测试(直接替换成你的数据集即可):
df <- data.frame( Black = c("No", "Yes", "No", "No"), White = c("Yes", "No", "No", "Yes"), Asian = c("No", "No", "Yes", "No"), Hispanic = c("No", "No", "No", "Yes"), stringsAsFactors = FALSE )
用嵌套ifelse生成合并列:
df$race_combined <- with(df, ifelse(Black == "Yes", "Black", ifelse(Asian == "Yes", "Asian", ifelse(White == "Yes" & Hispanic == "No", "White Non-Hispanic", ifelse(White == "Yes" & Hispanic == "Yes", "White Hispanic", NA) ) ) ) )
2. tidyverse方法(代码更易读)
如果习惯用dplyr包,case_when的逻辑结构更清晰:
library(dplyr) df <- df %>% mutate(race_combined = case_when( Black == "Yes" ~ "Black", Asian == "Yes" ~ "Asian", White == "Yes" & Hispanic == "No" ~ "White Non-Hispanic", White == "Yes" & Hispanic == "Yes" ~ "White Hispanic", TRUE ~ NA_character_ # 兜底处理意外情况,你的数据可省略此条 ))
运行后,df$race_combined就是符合要求的分类列。
内容的提问来源于stack exchange,提问作者Dan W
相关产品推荐
相关产品推荐

