如何根据 R 中的不同范围重新分配列的值?

How do I reassign the values of a column based on different ranges in R?

我现在正在研究睡眠测量 PSQI。一个叫做睡眠持续时间的变量是关于每个参与者晚上睡了多少小时,其值可以是 6、7.5、8、10、5、9 等。我想创建一个新列,将值更改为不同的值基于不同的范围。睡眠时间低于 5 小时改为 3,睡眠时间 5~6 小时改为 2,6~7 小时改为 1,超过 7 小时改为 0在晚上)。我一直在寻找有关脚本的信息,但找不到我想要做的事情。我知道 mutate 是创建一个新变量,但我不知道如何设置括号中的参数。谁能告诉我该怎么做?提前致谢!

ID。睡眠时间。 PSQI 值

一个。 6.5 1

b 5 2

c。 7.5 0

d。 8 0

e。 5 2

f。 9 0

克。 10 0

小时。 6 1

如何编写代码以获得 PSQI 值?

NewCol <- OldCol
NewCol[OldCol<5] <- 3
NewCol[OldCol>=5 & OldCol<6] <- 2
NewCol[OldCol>=6 & OldCol<7] <- 1
NewCol[OldCol>=7] <- 0
df <- data.frame(OldCol,NewCol)

我选择这种方法是为了新 R 用户的可读性

我们可以使用 dplyr 包中的 case_when

library(dplyr)
df %>%  
  mutate(NEW = case_when(sleep_duration < 5 ~ 3,
                         sleep_duration >=5 & sleep_duration < 6 ~ 2,
                         sleep_duration >=6 & sleep_duration < 7 ~ 1,
                         sleep_duration >=7 ~ 0))

输出:

  sleep_duration NEW
1            6.0   1
2            7.5   0
3            8.0   0
4           10.0   0
5            5.0   2
6            9.0   0

数据:

df <- data.frame(sleep_duration = c(6, 7.5, 8, 10, 5, 9))

您还可以将 dplyr 包与:“'Mutate'”一起使用来创建新列,并使用“'case_when'”来放置参数。

 librarby(dplr)
NewData = mutate(OldData, Newvariable = case_when(
  OldVariable < 5 ~ 3,
  OldVariable >= 5 & OldVariable <5  ~ 2,
  OldVariable >= 6 & OldVariable <7  ~ 1,
  OldVariable >= 7 ~ 0
))