我有一个数据集,其中有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"
答案 0 :(得分:3)
在这种情况下,我的最初尝试是尝试使用dplyr
的{{1}}函数。
case_when()
唯一的另一件事是,在上面的示例中,如果收缩压= 120或舒张压= 80会发生什么?我使用的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
。
这有助于解决您的问题吗?