在 R 中识别跨多个数据类别 table 的特定因素的存在
Identifying the presence of specific factors across multiple categories of data table in R
我正在使用 R 并尝试从导入数据的索赔行中确定具有特定诊断的患者 table。如果诊断代码在索赔中,则在同一数据 table 的新列中用一个指标对它们进行分类。一位患者在一次索赔中可以有多个诊断列 (>50) table。
在这个特定示例中,我只显示 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)
我使用多个 "or" 语句成功创建了一个指标,但是由于索赔数据中有许多诊断列 table,这可能会非常麻烦,我想知道是否有更简单的方法这而不是使用重复的 "or" 语句?
我会做:
library(data.table)
setDT(mydata)
mydata[ , Diab := apply(.SD, 1, function(x) any(x %in% c("25000","25001")))]
如果您真的想要 integer
而不是 logical
,只需使用 "cheater +
":
mydata[ , Diab := apply(.SD, 1, function(x) +any(x %in% c("25000","25001")))]
我正在使用 R 并尝试从导入数据的索赔行中确定具有特定诊断的患者 table。如果诊断代码在索赔中,则在同一数据 table 的新列中用一个指标对它们进行分类。一位患者在一次索赔中可以有多个诊断列 (>50) table。
在这个特定示例中,我只显示 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)
我使用多个 "or" 语句成功创建了一个指标,但是由于索赔数据中有许多诊断列 table,这可能会非常麻烦,我想知道是否有更简单的方法这而不是使用重复的 "or" 语句?
我会做:
library(data.table)
setDT(mydata)
mydata[ , Diab := apply(.SD, 1, function(x) any(x %in% c("25000","25001")))]
如果您真的想要 integer
而不是 logical
,只需使用 "cheater +
":
mydata[ , Diab := apply(.SD, 1, function(x) +any(x %in% c("25000","25001")))]