【发布时间】:2020-03-12 10:10:47
【问题描述】:
我正在对一个数据框进行排序,其中有许多不同的诊断信息, 即变量 v1、v2、v3。诊断测试可以给出分类结果,例如“Sick”、“Sick2”或“nosick”。患者已连续数年接受这些诊断——“年”。
我想创建一个新变量“Eval”,如果任何一个或多个诊断变量包含积极响应,即“生病”,它将把患者归类为生病 (1) " 或 "Sick2" 否则病人没有生病 (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)
【问题讨论】:
标签: r if-statement conditional-statements dplyr