繁体   English   中英

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

[英]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"

在这种情况下,我的最初尝试是尝试使用dplyrcase_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM