Я сортирую фрейм данных, в котором есть много разных диагностик, т.е. переменных v1, v2, v3. Диагностические тесты c могут давать категорические результаты, такие как «Sick», «Sick2» или «nosick». Пациенты проходили эту диагностику несколько лет подряд - «год».
Я хочу создать новую переменную, «Eval», которая бы классифицировала пациентов как больных (1), если какой-либо один или более из диагностируемых c переменных включают положительный ответ, то есть «больной» или «больной2», в противном случае пациент не болеет (0)
testframe %>% group_by(year) %>% mutate(Eval=ifelse(any(sickvars %in% sickv)==TRUE,1,0))
Тем не менее, вышеуказанный вызов также оценивает годы в котором нет положительных ответов как 1.
У меня тоже не было успеха с:
testframe %>% group_by(year) %>% mutate(if(any(sickvars %in% sickv)==TRUE){Eval <- 1} else {Eval <- 0})
Вот тестовый фрейм для использования.
#Create testframe
v1 <- c("Sick","nosick","nosick","nosick","nosick")
v2 <- c("nosick","nosick","Sick2","nosick","nosick")
v3 <- c("nosick","Sick","Sick","nosick","nosick")
sickv <- c("Sick","Sick2")
sickvars <- c(v1,v2,v3)
year <- c(1,2,3,4,5)
testframe <- data.frame(sickid,v1,v2,v3)