head(obesity)
ICD.9.Code Encounter.ID
E66.01 408773
E66.3 542207
E66.3 358741
E66.09 342534
obesity$obesity<- ifelse(obesity$ICD.9.Code =="E66.3", 1,
ifelse(obesity$ICD.9.Code=="E66.9"|obesity$ICD.9.Code=="E66.8"|obesity$ICD.9.Code=="E66.09",2,
ifelse(obesity$ICD.9.Code=="E66.1"|obesity$ICD.9.Code=="E66.2",3,4)))
ICD.9.Code Encounter.ID Obesity
E66.01 408773 4
E66.3 542207 1
E66.3 358741 1
E66.09 342534 2
答案 0 :(得分:0)
这是使用data.table
obesity<-as.data.table(obesity)
obesity[ICD.9.Code == "E66.3",Obesity := 1]
obesity[ICD.9.Code == "E66.9" | ICD.9.Code == "E66.8" | ICD.9.Code == "E66.09",Obesity := 2]
obesity[ICD.9.Code == "E66.1" | ICD.9.Code == "E66.2",Obesity := 3]
obesity[is.na(Obesity),Obesity := 4]
希望有帮助。
答案 1 :(得分:0)
这可能对您当前的数据有所帮助。无法保证,因为我还没有对其他数据进行测试。
library(tidyverse)
mydf %>%
mutate(Obesity=ifelse(ICD.9.Code=="E66.3",1,c(4,2)))
编辑:除非ID遵循头部中的确切模式,否则这将是不可能的。您可能考虑制作多个ifels,但这会破坏整个目的。
一种更简单的方法是对编码使用不同的数据帧,并按照注释中的建议绑定它们。想想merge
,cbind
。
干杯!