我正在处理icd10数据,我希望基于模式"E1X.9X“创建名为called的新变量,使用正则表达式,但我一直收到错误。请帮帮忙
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发布于 2019-05-04 03:01:55
看起来你的代码中有一些错误,我将在下面的代码中注意到它们:
您首先需要用引号将您的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
发布于 2019-05-05 20:21:22
这个问题已经解决了。我和合著者维护了五年的'icd‘R包可以做到这一点。特别是,它使用了来自AHRQ、Elixhauser original、Charlson等公司的标准化的合并症集合,包括您寻求的具有并发症的糖尿病。
例如,对于ICD-10 AHRQ,您可以在此处查看糖尿病及其并发症的代码。从icd 4.0开始,这些代码包括来自世界卫生组织的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如果你给出一个源数据和你的目标的例子,我可以提供更多帮助。
https://stackoverflow.com/questions/55975476
复制相似问题