r - 如何在 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))
先感谢您
解决方案
推荐阅读
- mysql - 如果我忘记了密码,如何重新安装 mysql
- python - NameError: variable is not defined when searching for a keyword with python
- javascript - 为什么中间变量比直接使用属性更快
- wordpress - 在 wp_head 钩子上运行的 php 函数中从 Cookiebot 获取 Cookie
- angular - 各种类型的 Angular 模块的生命周期是多少?
- logstash - Logstash 聚合过滤器插件无法正常工作
- c - 在 Win10 上使用 CodeBlocks 安装 GSL 库
- html - 所有 html 禁用按钮都具有禁用属性吗?
- javascript - 在节点 js 的同一端口上提供不同的静态页面实例
- r - 如何更改 R 中 2 个栅格图层的分辨率?