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

如何用R语言将ICD10代码数据框转换为对应亚章节?

高效实现ICD10代码到亚章节的映射

方法一:直接提取代码前3个字符(快速极简)

按照你提到的亚章节规则(由ICD10代码前3个字符标识),直接用字符串处理函数提取前3位是最高效的方案:

df <- data.frame(codes = c("Z23","M1711","E0500","Z00129","G4452"))

# 提取前3个字符作为亚章节代码
df$sub_chapter <- substr(df$codes, 1, 3)

运行后输出结果:

codes sub_chapter
1     Z23         Z23
2   M1711         M17
3   E0500         E05
4 Z00129         Z00
5   G4452         G44

方法二:利用icd包匹配官方亚章节范围(严谨规范)

如果需要严格匹配ICD10官方定义的亚章节范围(部分亚章节可能对应连续代码段,而非单纯前3位一致),可以借助icd包的内置功能处理范围匹配:

步骤1:安装并加载包

install.packages("devtools")
devtools::install_github("jackwasey/icd")
library(icd)

步骤2:用icd_map完成映射

icd包的icd_map函数已内置范围逻辑,无需手动展开中间值,直接实现代码到亚章节的精准映射:

# 加载示例数据
df <- data.frame(codes = c("Z23","M1711","E0500","Z00129","G4452"))

# 映射亚章节,同时返回亚章节名称
subchap_mapping <- icd_map(df$codes, map = icd10_sub_chapters, return_df = TRUE)

# 合并到原数据框
df <- merge(df, subchap_mapping, by.x = "codes", by.y = "icd_code", all.x = TRUE)

运行后输出结果(包含亚章节代码和官方名称):

codes icd_sub_chapter               long_name
1   E0500             E05  Thyrotoxicosis with diffuse goiter
2   G4452             G44          Other headache syndromes
3   M1711             M17             Osteoarthritis of knee
4 Z00129             Z00  General adult medical examination
5     Z23             Z23  Encounter for immunization

方法选择建议

  • 若你的场景中亚章节严格对应代码前3位,优先用方法一,执行速度最快;
  • 若需要贴合官方ICD10亚章节的范围定义,则用方法二,避免手动处理范围的误差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 14:45:46