繁体   English   中英

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

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

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