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

R中如何将tibble的天数字段自动重编码为学习周变量

实现方法

你可以通过整数除法逻辑实现需求,无需编写长段case_when(),可自动适配后续新增的任意天数数据,两种常用实现方式如下:

tidyverse 实现

library(tidyverse)
# 构造示例数据
tb <- tibble(subject = rep(c("a", "b", "c"), each = 20), days = rep(-2:17, 3))
# 生成study_week字段
tb <- tb %>%
  mutate(study_week = if_else(days < 0, -1L, (days %/% 7) + 1L))

基础R实现

tb$study_week <- ifelse(tb$days < 0, -1L, (tb$days %/% 7) + 1L)

逻辑说明

  • 先做分支判断:所有小于0的days统一赋值为-1
  • 大于等于0的天数使用R的整数除法运算符%/%计算除以7的商,再加1即可得到对应周数:
    • 0~6天除以7的商为0,加1得到第1周
    • 7~13天除以7的商为1,加1得到第2周
    • 后续新增的更大天数会自动按7天为周期递推周数,无需手动修改规则

验证输出

打印前10行结果和需求的预期输出完全一致:

# A tibble: 60 × 3
   subject  days study_week
   <chr>   <int>      <int>
 1 a          -2         -1
 2 a          -1         -1
 3 a           0          1
 4 a           1          1
 5 a           2          1
 6 a           3          1
 7 a           4          1
 8 a           5          1
 9 a           6          1
10 a           7          2
# ℹ 50 more rows

内容的提问来源于stack exchange,提问作者persephone

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:15:04