You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中将诊断编码分组为疾病类别新变量

解决R语言中诊断编码分组为疾病类别的问题

方法1:修正case_when()的用法

你之前的代码错误在于用==匹配向量(会引发循环匹配问题),且不需要嵌套case_when。正确做法是用%in%判断编码是否属于目标组,代码如下:

library(dplyr)

data <- data %>%
  mutate(diagnosis = case_when(
    diag_code %in% c(1,2,3,4,84) ~ "resp disease",
    diag_code %in% c(5,6,7,32,56) ~ "CVD disease",
    TRUE ~ "Unknown"
  ))
  • %in%是匹配多个值的正确方式,用来检查diag_code是否在指定编码列表中
  • case_when按顺序匹配条件,第一个符合的条件会返回对应类别
  • 最后一行TRUE ~ "Unknown"处理所有未匹配到的编码

方法2:用recode()快速映射

如果编码和类别对应关系简单,recode()是更简洁的选择:

data <- data %>%
  mutate(diagnosis = recode(
    diag_code,
    `1` = "resp disease", `2` = "resp disease", `3` = "resp disease",
    `4` = "resp disease", `84` = "resp disease",
    `5` = "CVD disease", `6` = "CVD disease", `7` = "CVD disease",
    `32` = "CVD disease", `56` = "CVD disease",
    .default = "Unknown"
  ))

若需要diagnosis为因子类型,替换成recode_factor()即可。

方法3:映射表合并(适合大量编码场景)

如果后续要频繁修改或扩展疾病类别,建议先创建映射表,再通过合并实现分组,这种方式更易维护:

# 创建诊断编码-疾病类别的映射表
diag_map <- tibble(
  diag_code = c(1,2,3,4,84,5,6,7,32,56),
  diagnosis = c(rep("resp disease",5), rep("CVD disease",5))
)

# 合并原数据和映射表,处理未匹配的编码
data <- data %>%
  left_join(diag_map, by = "diag_code") %>%
  mutate(diagnosis = ifelse(is.na(diagnosis), "Unknown", diagnosis))

内容的提问来源于stack exchange,提问作者Alaina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 22:30:51