我正在使用 R 并尝试根据导入数据表的 claim 行确定具有特定诊断的患者。如果诊断代码在 claim 中,则使用同一数据表中新列中的指标对其进行分类。患者在单个理赔表中可以有多个诊断列 (>50)。
在这个特定的示例中,我仅显示 6 个诊断列,并专门查找包含诊断代码“25000”或“25001”的 claim (对于癌症等某些疾病,可能有数百个不同的诊断代码)。
claim 文件示例
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)
我使用多个“或”语句成功创建了一个指标,但这对于 claim 数据表中的许多诊断列来说可能非常麻烦,我想知道是否有更简单的方法来做到这一点,而不是使用重复的“或”声明?
最佳答案
我会这样做:
library(data.table)
setDT(mydata)
mydata[ , Diab := apply(.SD, 1, function(x) any(x %in% c("25000","25001")))]
如果你真的想要整数
而不是逻辑
,只需使用“cheat +
”:
mydata[ , Diab := apply(.SD, 1, function(x) +any(x %in% c("25000","25001")))]
关于r - 识别 R 中多个数据表类别中特定因素的存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34112821/