R语言中使用if条件实现数据框肿瘤部位列分类重命名的方法
R语言肿瘤部位分类重编码实现方案
你可以通过建立原始部位取值到目标分类的映射关系,快速生成分类后的新列,以下是两种常用的实现方法:
方法1:使用dplyr包的case_when函数(适合规则较少、逻辑灵活的场景)
先加载dplyr包,再通过mutate生成新列:
# 安装包(已安装可跳过) install.packages("dplyr") library(dplyr) # 示例数据,你可以替换成自己的数据集 df <- data.frame( 肿瘤部位 = c("肠", "结肠", "肺", "胃", "膀胱", "肠", "肺") ) # 生成分类新列 df <- df %>% mutate(肿瘤部位分类 = case_when( # 自定义分类规则 肿瘤部位 %in% c("胃", "肠", "结肠") ~ "胃肠道", 肿瘤部位 == "肺" ~ "呼吸系统", 肿瘤部位 == "膀胱" ~ "泌尿系统", # 未匹配到的取值默认保留原值,也可以改成 ~ "其他"统一归类 .default = 肿瘤部位 ))
方法2:使用命名向量映射(适合分类规则多、需要批量维护的场景)
如果分类条目较多,可以先统一维护映射关系再批量匹配:
# 建立映射关系,键为原始部位值,值为对应分类 site_map <- c( "胃" = "胃肠道", "肠" = "胃肠道", "结肠" = "胃肠道", "肺" = "呼吸系统", "膀胱" = "泌尿系统" ) # 匹配生成新列,未匹配的取值保留原值,也可以替换为"其他" df$肿瘤部位分类 <- site_map[df$肿瘤部位] df$肿瘤部位分类[is.na(df$肿瘤部位分类)] <- df$肿瘤部位[is.na(df$肿瘤部位分类)]
注意事项
- 你可以根据自己的分类规范调整上述规则中的取值和对应分类,新增分类直接补充对应条目即可
- 如果原始
肿瘤部位列存在多余空格、中英文标点混用、大小写差异,可以先通过trimws()、gsub()、tolower()等函数清洗原始列后再做匹配,避免匹配遗漏
内容的提问来源于stack exchange,提问作者kirellos said
相关产品推荐
相关产品推荐

