如何用R语言icd包为含重复ICD10码的大数据集添加诊断说明
解决ICD10诊断说明匹配问题
错误原因
icd::explain_code()默认会自动对输入的重复ICD码去重,仅返回唯一码的诊断说明,导致返回的向量长度与原数据集行数不匹配,触发description must be size 4 or 1, not 3这类长度错误。
解决方案
方法1:逐行处理ICD码
用purrr::map_chr()遍历每个ICD码,确保每个记录都生成对应的诊断说明,即使ICD码重复也能返回与原数据行数一致的结果:
library(icd) library(tidyverse) mydata <- tribble( ~ID, ~ICD10, 1, "J12.81", 2, "J44.9", 3, "J12.81", 4, "E84.0" ) desired_output <- mydata %>% mutate(Description = map_chr(ICD10, ~icd::explain_code(.x)))
方法2:生成对照表后关联
针对存在大量重复ICD码的数据集(如4000条记录),先提取唯一ICD码生成诊断说明对照表,再通过left_join关联回原数据,能减少重复调用explain_code的次数,提升效率:
# 生成ICD码-诊断说明对照表 icd_lookup <- mydata %>% distinct(ICD10) %>% mutate(Description = icd::explain_code(ICD10)) # 关联原数据得到结果 desired_output <- mydata %>% left_join(icd_lookup, by = "ICD10")
验证结果
两种方法最终生成的desired_output均与预期一致,每条记录都会匹配对应的ICD10诊断说明。
内容的提问来源于stack exchange,提问作者John Ryan
相关产品推荐
相关产品推荐

