首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据R中的不同范围重新分配列的值?

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

Stack Overflow用户
提问于 2021-05-28 01:36:19
回答 3查看 45关注 0票数 0

我现在正在做一个睡眠测量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值?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-05-28 02:01:03

我们可以使用dplyr包中的case_when

代码语言:javascript
复制
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))

输出:

代码语言:javascript
复制
  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

数据:

代码语言:javascript
复制
df <- data.frame(sleep_duration = c(6, 7.5, 8, 10, 5, 9))
票数 1
EN

Stack Overflow用户

发布于 2021-05-28 01:41:27

代码语言:javascript
复制
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用户阅读

票数 2
EN

Stack Overflow用户

发布于 2021-05-28 02:11:51

您还可以使用dplyr包:''Mutate'‘创建一个新列,并使用''case_when'’放置参数。

代码语言:javascript
复制
 librarby(dplr)
NewData = mutate(OldData, Newvariable = case_when(
  OldVariable < 5 ~ 3,
  OldVariable >= 5 & OldVariable <5  ~ 2,
  OldVariable >= 6 & OldVariable <7  ~ 1,
  OldVariable >= 7 ~ 0
))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67727269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档