[英]R: Recode 2 continuous variables into 1 categorical variable
我有一个数据集,其中1个变量的收缩压和1个变量的舒张压。 我想对血压水平做一个明确的分类。 这要求使用每个变量的值范围,事实证明这很困难。
ID Systolic Diastolic
1 130 80
2 118 76
3 120 80
4 115 74
5 184 107
6 114 69
7 95 72
这是我获得的最接近的结果,但我不相信我在这条道路上走的正确。 有人可以指出我正确的方向吗?
df$BPLevel[Systolic < 120 | Diastolic < 80] <- "Normal"
df$BPLevel[120 < Systolic < 139 | 80 < Diastolic < 89] <- "Prehypertension"
df$BPLevel[Systolic >= 140 | Diastolic >= 90] <- "Hypertension"
df$BPLevel[Systolic == "." | Diastolic == "."] <- "Missing"
在这种情况下,我的最初尝试是尝试使用dplyr
的case_when()
函数。
library(dplyr)
df <- data.frame(ID = c(1:7),
Systolic = c(130,118,120,115,184,114,95),
Diastolic = c(80,76,80,74,107,69,72))
df <- df %>%
mutate(BPLevel = case_when(Systolic < 120 | Diastolic < 80 ~ "Normal",
between(Systolic, 120, 139) | between(Diastolic, 80, 89)~ "Prehypertension",
Systolic>=140 | Diastolic >= 90 ~ "Hypertension",
TRUE ~ "Missing"
))
唯一的另一件事是,在上面的示例中,如果收缩压= 120或舒张压= 80怎么办? 我使用的dplyr::between
函数包括120和80。请检查?dplyr::between
以获取更多详细信息。
这是否可以解决您的问题?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.