R:将2个连续变量重新编码为1个分类变量

时间:2018-07-14 02:35:34

标签: r

我有一个数据集,其中有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"

1 个答案:

答案 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

这有助于解决您的问题吗?