【发布时间】:2018-04-30 13:24:30
【问题描述】:
我有一个包含多列(大约 150 列)的大型数据框。
有一系列列(Dx1、Dx2..直到 Dx30)是诊断代码(代码是数字,但它们是对应于使用 ICD-9 编码系统的医学诊断的分类变量)。
我有工作代码来搜索单个列,但需要搜索所有 30 列以查看是否有任何列包含指定范围 (DXrange) 内的代码。
核心数据框如下所示:
Case DX1 DX2 DX3 DX4...DX30
1 123 345 567 99 12
2 234 345 NA NA NA
3 456 567 789 345 34
这是工作代码:
## Defines a range of codes to search for
DXrange <- factor(41000:41091, levels = levels(core$DX1))
## Search for the DXrange codes in column DX1.
core$IndexEvent <- core$DX1 %in% DXrange & substr(core$DX1, 5, 5) != 2
## What is the frequency of the IndexEvent?
cat("Frequency of IndexEvent : \n"); table(core$IndexEvent)
工作代码改编自“Calculating Nationwide Readmissions Database (NRD) Variances, Report # 2017-01”
我可以为每个 DX 列运行这个,然后将它们相加得到最终的 IndexEvent 总数,但这不是很有效。
【问题讨论】:
-
你说这是一个工作代码,但除非你分享
core数据集,否则它是行不通的。 -
请学习如何制作可重现的示例:stackoverflow.com/questions/5963269/…
-
谢谢。更新了问题以包含核心数据框的子集。
-
您应该添加一些创建示例数据的 R 代码。
-
我推荐我和一些合作者创建的 CRAN 包:icd。它可以处理医疗代码的长或宽格式数据帧,包括 ICD-9 和 ICD-10 代码,并使用标准的同行评审或自定义组定义将它们分配给组。它速度非常快,在过去五年中被世界各地的研究人员使用和贡献,并验证了原始文章。希望你觉得它有用。 cran.r-project.org/package=icd
标签: r