【发布时间】:2021-12-28 09:04:03
【问题描述】:
我有一些患者在不同的时间接受不同的治疗。 我想将他们接受的治疗更改为一个二进制变量,如果患者至少接受过一次药物,则取值为 1,如果他们从未接受过药物,则取值为 0。
我设法做到了这一点,但方法很繁琐,使用几十种不同类型的药物可能很难。
我想优化我的代码,主要是避免一一创建所有与药物相关的二进制变量。
id<-c(rep("A",7),rep("B",4))
medoc<-c("par","mor","mor","par","sed","sed",
"sed","cur","sed","cur","sed")
mydata<-data.frame(id,medoc)
mydata2<-mydata%>%group_by(id)%>%
mutate(medoc_str=paste(unique(medoc),collapse = " "))%>%
distinct(id,.keep_all = TRUE)
mydata2$par<-NA
mydata2$mor<-NA
mydata2$sed<-NA
mydata2$cur<-NA
mydata2$par<-ifelse(
grepl("par",mydata2$medoc_str)==TRUE,1,0
)
mydata2$mor<-ifelse(
grepl("mor",mydata2$medoc_str)==TRUE,1,0
)
mydata2$sed<-ifelse(
grepl("sed",mydata2$medoc_str)==TRUE,1,0
)
mydata2$cur<-ifelse(
grepl("cur",mydata2$medoc_str)==TRUE,1,0
)
【问题讨论】:
标签: r dummy-variable grepl