我如何在r中创建一个代码,如果5个条件中至少有3个为真,那么它可以打印" sc"?
我已经尝试运行这段代码,但然后我得到这个错误消息:
Error: Problem with
mutate()
inputSCM
.x输入
SCM
必须是矢量,不能是formula
对象i输入
SCM
为~...
。
datosB_graficas <- datosB_mice %>% mutate(SCM=case_when (((TG > 150) + (Glucosa_mg > 110) +
(Per.Cintura > 88) + (PAS > 130) +
(PAD> 88) + (HDL<40 )) >= 3)~ {"SCM"},
TRUE~ "Sano" )
structure(list(PAS = c(130, 100, 151, 134, 125, 146, 145, 127,
109, 115), PAD = c(94, 61, 79, 74, 78, 88, 78, 92, 71, 68), Per.Cintura = c(95.9,
101, 83.1, 103.2, 96.9, 94.4, 110.9, 92.8, 76.6, 77.3), HDL = c(38,
48, 40, 70, 45, 39, 44, 51, 57, 51), TG = c(152, 92, 181, 99,
103, 198, 166, 76, 111, 106), Glucosa_mg = c(74, 85, 91, 92,
88, 86, 117, 85, 79, 85)), row.names = c(NA, -10L), class = "data.frame")
您可以使用as。将每个True和False转换为0或1。
datosB_mice%>%mutate(SCM=case_when(as.numeric(TG>150) + as.numeric(Glucosa_mg > 110) + as.numeric(Per.Cintura > 88) + as.numeric(PAS > 130) + as.numeric(PAD> 88) + as.numeric (HDL<40 ) >=3 ~ "SCM", TRUE ~ "Sano"))
PAS PAD Per.Cintura HDL TG Glucosa_mg SCM
1 130 94 95.9 38 152 74 SCM
2 100 61 101.0 48 92 85 Sano
3 151 79 83.1 40 181 91 Sano
4 134 74 103.2 70 99 92 Sano
5 125 78 96.9 45 103 88 Sano
6 146 88 94.4 39 198 86 SCM
7 145 78 110.9 44 166 117 SCM
8 127 92 92.8 51 76 85 Sano
9 109 71 76.6 57 111 79 Sano
10 115 68 77.3 51 106 85 Sano
不确定这是否是最优解,但你可以在这些条件下运行一个循环,有一个迭代器,我们叫它k,检查它们是否为真,如果任何条件为真,就给k加1。然后,如果在循环结束时k为>= 3,您将知道满足了3/5个条件。
datosB_graficas <- datosB_mice %>% mutate(SCM = case_when(as.numeric(TG > 150) + as.numeric(Glucosa_mg > 110) + as.numeric(Per.Cintura > 88) + as.numeric(PAS > 130) + as.numeric(PAD> 88) + as.numeric(HDL<40 ) >= 3 ~ "SCM",
TRUE~ "Sano" ))
#OR
datosB_graficas <- datosB_mice %>% mutate(SCM = case_when(+(TG > 150) + +(Glucosa_mg > 110) + +c(Per.Cintura > 88) + +(PAS > 130) + +(PAD> 88) + +(HDL<40 ) >= 3 ~ "SCM",
TRUE~ "Sano" ))
> datosB_graficas
PAS PAD Per.Cintura HDL TG Glucosa_mg SCM
1 130 94 95.9 38 152 74 SCM
2 100 61 101.0 48 92 85 Sano
3 151 79 83.1 40 181 91 Sano
4 134 74 103.2 70 99 92 Sano
5 125 78 96.9 45 103 88 Sano
6 146 88 94.4 39 198 86 SCM
7 145 78 110.9 44 166 117 SCM
8 127 92 92.8 51 76 85 Sano
9 109 71 76.6 57 111 79 Sano
10 115 68 77.3 51 106 85 Sano