【发布时间】:2016-03-10 19:56:35
【问题描述】:
我正在使用 R 并尝试从导入的数据表的索赔行中确定具有特定诊断的患者。如果索赔中包含诊断代码,则使用同一数据表中新列中的指示符对它们进行分类。一个患者在一个索赔表中可以有许多诊断列 (>50)。
在这个特定示例中,我只显示了 6 个诊断列,并专门查找包含诊断代码“25000”或“25001”的索赔(对于某些疾病,如癌症,可能有数百个不同的诊断代码)。
示例声明文件
ID <- c(01, 02, 03, 04, 05, 06)
Dx1 <- c('25000', '25000', '91260', '87940', '81930', '79020')
Dx2 <- c('49600', '77760', '25000', '39320', '66020', '40100')
Dx3 <- c('41000', '49600', '65120', '65400', '40100', '88730')
Dx4 <- c('83500', '65940', '43100', '95210', '44000', '80390')
Dx5 <- c('58450', '25001', '81930', '35080', '49040', '40100')
Dx6 <- c('95260', '49600', '96460', "25000", '27910', '33720')
mydata <- data.frame(ID,Dx1,Dx2,Dx3,Dx4,Dx5,Dx6)
在声明中查找特定的诊断代码
mydata2 <- mydata[mydata$Dx1 %in% c('25000', "25001")
| mydata$Dx2 %in% c('25000', "25001")
| mydata$Dx3 %in% c('25000', "25001")
| mydata$Dx4 %in% c('25000', "25001")
| mydata$Dx5 %in% c('25000', "25001")
| mydata$Dx6 %in% c('25000', "25001"), ]
创建新的指标列
mydata$Diab <- ifelse(mydata$ID %in% (mydata2$ID), 1, 0)
我使用多个“或”语句成功创建了一个指标,但是对于索赔数据表中的许多诊断列,这可能非常麻烦,我想知道是否有更简单的方法来代替使用重复的“或”声明?
【问题讨论】:
-
我建议重塑您的数据和
ID、DxN、value列。那么做很多查询会容易得多。