我正在使用icd10数据,我希望使用正则表达式基于模式“ E1X.9X”创建一个名为complication的新变量,但是我一直遇到错误。请帮助
dm_2$icd9_9code<- (E10.49, E11.51, E13.52, E13.9, E10.9, E11.21, E16.0)
dm_2$DM.complications<- "present"
dm_2$DM.complications[regexpr("^E\\d{2}.9$",dm_2$icd9_code)]<- "None"
# Error in dm_2$DM.complications[regexpr("^E\\d{2}.9", dm_2$icd9_code)] <-
# "None" : only 0's may be mixed with negative subscripts
我想要
icd9_9code complications
E10.49 present
E11.51 present
E13.52 present
E13.9 none
E10.9 none
E11.21 present
答案 0 :(得分:0)
您的代码中似乎有一些错误,我将在下面的代码中予以记录:
您首先要用引号将您的ICD代码包装起来:"E13.9"
dm_2 <- data.frame(icd9_9code = c("E10.49", "E11.51", "E13.52", "E13.9", "E10.9", "E11.21", "E16.0"))
接下来,让我们使用grepl()
搜索特定的ICD模式。确保将其应用于正确的列,上面的代码尝试使用dm_2$icd9_code
而不是dm_2$icd9_9code
:
dm_2$DM.complications <- "present"
dm_2$DM.complications[grepl("^E\\d{2}.9$", dm_2$icd9_9code)] <- "None"
最后,
dm_2
#> icd9_9code DM.complications
#> 1 E10.49 present
#> 2 E11.51 present
#> 3 E13.52 present
#> 4 E13.9 None
#> 5 E10.9 None
#> 6 E11.21 present
#> 7 E16.0 present
一个简短的说明-还有一个很棒的ICD软件包,您可能也会发现它很方便:https://cran.r-project.org/web/packages/icd/index.html
答案 1 :(得分:0)
此问题已解决。我和合著者已经维护了五年的“ icd” R软件包可以做到这一点。特别是,它使用标准化的合并症,包括AHRQ,Elixhauser original,Charlson等发现的具有并发症的糖尿病。
例如,对于ICD-10 AHRQ,您可以在此处查看糖尿病合并症的代码。从icd 4.0开始,这些内容包括WHO的ICD-10编码以及ICD-10-CM的所有年份。
icd::icd10_map_ahrq$DMcx
要使用它们,首先只需拿起您的患者数据框并尝试:
library(icd)
pts <- data.frame(visit_id = c("encounter-1", "encounter-2", "encounter-3",
"encounter-4", "encounter-5", "encounter-6"), icd10 = c("I70401",
"E16", "I70.449", "E13.52", "I70.6", "E11.51"))
comorbid_ahrq(pts)
# and for diabetes with complications only:
comorbid_ahrq(pts)[, "DMcx"]
或者,您可以通过这种方式获取数据框而不是矩阵:
comorbid_ahrq(pts, return_df = TRUE)
# then you can do:
comorbid_ahrq(pts, return_df = TRUE)$DMcx
如果您提供源数据和目标示例,我可以提供更多帮助。