[英]How do I reassign the values of a column based on different ranges in R?
我现在正在研究睡眠测量 PSQI。 一个名为 sleep duration 的变量是关于每个参与者晚上睡多少小时,其值可以是 6、7.5、8、10、5、9 等。我想创建一个新列,其值更改为不同的值根据不同的范围。 睡眠时间低于 5 小时改为 3,睡眠时间 5~6 小时改为 2,6~7 小时改为 1,超过 7 小时改为 0(我想保留睡眠时间的旧栏,他们睡了多少小时晚上)。 我一直在寻找有关脚本的信息,但找不到我想要做什么。 我知道 mutate 是创建一个新变量,但我不知道如何在括号中设置 arguments。 谁能告诉我该怎么做? 先感谢您!
ID。 睡眠时间。 PSQI 值
一个。 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 值?
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 用户选择了这种方法以提高可读性
我们可以使用来自case_when
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))
Output:
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 package 与:''Mutate'' 来创建一个新列和 ''case_when'' 来放置 arguments。
librarby(dplr)
NewData = mutate(OldData, Newvariable = case_when(
OldVariable < 5 ~ 3,
OldVariable >= 5 & OldVariable <5 ~ 2,
OldVariable >= 6 & OldVariable <7 ~ 1,
OldVariable >= 7 ~ 0
))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.