我现在正在做一个睡眠测量PSQI。一个名为睡眠持续时间的变量是关于每个参与者晚上睡眠的小时数,其值可以是6、7.5、8、10、5、9等。我想创建一个新列,其值根据不同的范围更改为不同的值。睡眠时间小于5小时改为3,睡眠时间5~6小时改为2,6~7小时改为1,超过7小时改为0(我想保留原来的睡眠时间列,即他们晚上的睡眠时间)。我一直在寻找关于脚本的信息,但找不到我想要做的事情。我知道mutate是创建一个新的变量,但我不知道如何设置括号中的参数。有人能教我怎么做吗?提前谢谢你!
ID.。睡眠持续时间。PSQI值
a. 6.5 1
B 5 2
c. 7.5 %0
d. 8%0
e. 5 2
f. 9%0
g. 10 0
h. 6 1
如何编写代码来获取PSQI值?
发布于 2021-05-28 02:01:03
我们可以使用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))发布于 2021-05-28 01:41:27
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用户阅读
发布于 2021-05-28 02:11:51
您还可以使用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
))https://stackoverflow.com/questions/67727269
复制相似问题