R语言中合并种族与族裔字段生成患者分类表格的实现方法问询
R语言中合并种族与族裔字段生成患者分类表格的实现方法问询
Hey there! 看起来你需要把种族和族裔两个字段结合起来,给每个患者生成更细致的分类(比如"White Hispanic/Latino"、"Black Other"这类),同时还想统计这些分类的分布对吧?我来一步步帮你解决这个问题:
第一步:把种族数字编码转换成文字标签
你的种族列是1-6的数字,首先得把这些数字映射成具体的种族名称(比如1=白人、2=黑人,这个对应关系得你根据实际编码规则调整哦)。这里推荐用dplyr包来处理,语法更直观:
# 先安装并加载dplyr(如果还没装的话) install.packages("dplyr") library(dplyr) # 假设你的数据框叫df,第二列是种族数字列(比如列名叫Race) df <- df %>% mutate(Race_Label = case_when( Race == 1 ~ "White", Race == 2 ~ "Black", Race == 3 ~ "Asian", Race == 4 ~ "Native American", Race == 5 ~ "Pacific Islander", Race == 6 ~ "Other Race", TRUE ~ "Unknown" # 处理不在1-6范围内的意外值 ))
如果习惯用base R的话,也可以用factor函数来做:
df$Race_Label <- factor(df$Race, levels = 1:6, labels = c("White", "Black", "Asian", "Native American", "Pacific Islander", "Other Race"))
第二步:合并种族与族裔生成细分分类
接下来把种族标签和族裔列(第四列)结合,还要考虑你提到的Specify列——当族裔是"Other"时,可以用Specify里的具体内容来补充,让分类更准确:
df <- df %>% mutate( # 先处理族裔的完整描述:当Ethnicity是Other且Specify有值时,用Specify内容 Ethnicity_Full = case_when( Ethnicity == "Other" & !is.na(Specify) ~ Specify, TRUE ~ Ethnicity ), # 合并种族和族裔,生成最终的细分分类 Race_Ethnicity = paste(Race_Label, Ethnicity_Full, sep = " ") )
这样处理后,每个患者的Race_Ethnicity列就会显示你想要的"White Hispanic/Latino"、"Black Honduran"这类具体分类啦。
第三步:查看结果或生成统计表格
- 查看每个患者的分类:直接选择需要的列展示即可,比如:
select(df, Patient_ID, Race_Label, Ethnicity_Full, Race_Ethnicity)
- 统计各类别的分布:你提到的
table()函数完全适用,也可以用dplyr生成更美观的统计表格:
# 用base R的table函数统计数量 table(df$Race_Ethnicity) # 用dplyr生成排序后的统计表格 df %>% count(Race_Ethnicity, sort = TRUE) %>% rename(Count = n)
小提示
- 记得把代码里的列名(比如
Race、Ethnicity、Patient_ID)替换成你数据框里的实际列名,要是不确定列名,可以用colnames(df)查看。 - 如果你的数据框列是按位置来的(比如第二列是种族,第四列是族裔),也可以用
df[,2]、df[,4]来指代,但用列名更不容易出错哦。
备注:内容来源于stack exchange,提问作者rstudio_noob
相关产品推荐
相关产品推荐

