You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中如何按数值范围给新列赋值:PSQI睡眠时长得分计算

R语言实现PSQI睡眠时长分箱赋值

核心实现逻辑

使用dplyr包的mutate()搭配case_when()完成区间映射,mutate()用于新增列,case_when()用于按优先级匹配多个条件赋值,原有睡眠时长列会完整保留。

注意:你的列名sleep duration包含空格,R代码中需要用反引号包裹该列名,避免语法报错。

完整可运行代码

# 加载依赖包
library(dplyr)

# 构造示例数据(实际使用时替换为自己的数据集即可)
raw_df <- data.frame(
  ID = c("a","b","c","d","e","f","g","h"),
  `sleep duration` = c(6.5,5,7.5,8,5,9,10,6),
  check.names = FALSE
)

# 核心计算逻辑
result_df <- raw_df %>%
  # 新增PSQI_value列,按区间赋值
  mutate(PSQI_value = case_when(
    `sleep duration` < 5 ~ 3,
    `sleep duration` >= 5 & `sleep duration` < 6 ~ 2,
    `sleep duration` >= 6 & `sleep duration` < 7 ~ 1,
    `sleep duration` >=7 ~ 0
  ))

参数说明

  • mutate()内第一个参数为你要创建的新列名,可自行修改
  • case_when()内的规则按顺序匹配,满足某条规则后就会停止后续判断,赋值为对应~右侧的数值,和你给出的分箱规则完全对应。运行后输出的result_df会包含原有的所有列+新增的PSQI分箱值列,和你提供的示例结果完全一致。

内容的提问来源于stack exchange,提问作者Chun-Chi Yang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 03:54:07