首页 > 解决方案 > 如何在 Studio 中使用具有字符对象的值创建逻辑参数

问题描述

我在使用条件语句创建代码时遇到了一些困难,其中一个参数是一个带有不是数字而是字符的列表对象的值。我使用参与者服用的药物创建了一个列表,并根据他们的功能将他们分组到列表中。我想要的结果是,如果存在 6 个条件中的至少 2 个,则如果不是“低”,则显示“高”。像这样的东西(我包括了数据的一个子集)

structure(list(ID = c("MI-001", "MI-003", "MI-009", "MI-012", 
"MI-022", "MI-023", "MI-025", "MI-037", "MI-038", "MI-043", "MI-058", 
"MI-060", "MI-068", "MI-069", "MI-073", "MI-078", "MI-082", "MI-085", 
"MI-086"), Medicamentos = structure(c(1L, 1L, 1L, 2L, 1L, 2L, 
2L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L), .Label = c("No", 
"Si"), class = "factor"), Tipo_med = c("NA", "NA", "NA", "Enalapril, Furosemida, Metoprolol, Alopurinol", 
"NA", "Beclometasona, Salbutamol, Esomeprazol, Losartán, ketotifeno, Atorvastatina", 
"Eutirox, Sertralina, Atorvastatina, Metformina", "NA", "NA", 
"Verapamilo, Enalapril", "NA", "NA", "NA", "NA", "NA", "NA", 
"Enalapril, Tiroxin, Propanolol", "NA", "Losartán, Hidroclorotiazida"
), Clasificacion_general = structure(c(1L, 1L, 1L, 1L, 2L, 3L, 
1L, 2L, 2L, 2L, 3L, 1L, 3L, 1L, 3L, 3L, 2L, 2L, 1L), .Label = c("Hypertension", 
"Normal", "Prehipertensión"), class = "factor"), HDL = c(38, 
51, 51, 44, 47, 63, 44, 51, 39, 37, 74, 39, 51, 50, 50, 34, 45, 
61, 36), TG = c(195, 76, 160, 128, 38, 80, 166, 106, 128, 175, 
132, 111, 128, 112, 119, 440, 202, 80, 188), Glucosa_mg = c(86, 
85, 96, 79, 77, 91, 117, 85, 98, 130, 104, 90, 85, 84, 84, 98, 
101, 84, 71), HOMAI = c(3.201092, 1.31670666666667, 1.034816, 
5.68620933333333, 1.76448066666667, 5.46576333333333, 5.131308, 
1.12591, 5.351976, 13.4199, 2.26775466666667, 1.41414, 2.86404666666667, 
1.456616, 1.527064, 13.5225626666667, 4.873048, 1.877232, 2.21543666666667
), PCR = c(1.71, 1.84, 3.52, 2.32, 0.37, 2.18, 4.03, 0.46, 1.99, 
2.97, 1.51, 0.39, 0.62, 0.93, 0.5, 2.15, 2.56, 0.5, 2.45)), row.names = c(NA, 
-19L), class = c("tbl_df", "tbl", "data.frame"))

meds_hiper = c("acido acetilsalicilico", "Amlodipino", "Asawin", "Aspirina", "Aspirineta", "Atorvastatina", "Carvedilol", "Coumadin", "Diovan", "Enalapril", "Espironolactona", "Furosemida", "Hidroclorotiazida", "Hidroclorotizida", "Losarta", "Losartan", "Metildigoxina", "Metoprolol", "Nimodipina", "Nimodipino", "Propanolol", "Venadol", "Verapamilo", "Warfarina", "hipertension")
meds_diab = c("Galvus met", "Glibenclamida", "Insulina", "Insulina lantus", "Insulina NPH", "Metformina")
meds_lip = c("Atorvastatina", "Ciprofibrato", "Estatina", "Gemfibrozilo", "Gemfribrozilo", "Lovastatina", "Simvastatina", "colesterol")

multi<-multi%>% mutate(SCM=case_when(as.numeric(TG>150)|as.character(meds_lip>=1) +
                                                   as.numeric(Glucosa_mg>100)|as.character(meds_diab>=1)  +
                                                   as.numeric(HOMAI > 3) +
                                                   as.numeric(PCR>3)+
                                                   as.numeric(Clasificacion_general=="Hypertension")|as.character(meds_hiper>=1)+
                                                   as.numeric (HDL<40 )+(Sexo==2)|
                                                   as.numeric (HDL<50 )+(Sexo==1)|as.character(meds_lip>=1) >=2 ~ "High",
                                                  TRUE ~ "Low"),
                                                  SCM=factor(SCM))

先感谢您

标签: rconditional-statementscharacter

解决方案


推荐阅读