如何根据 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
))
我现在正在研究睡眠测量 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
))