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

R语言如何根据季节起始月份向量生成循环的各季节月份序列

实现方案

核心逻辑

  • 月份是1-12循环的,我们可以先把月份映射到1~24的连续区间,避免跨年度的复杂判断
  • 补全结束边界:在输入的起始月份向量最后追加第一个起始月份 + 12,解决最后一个季节的结束边界越界问题
  • 每个季节的月份范围是「当前起始月」到「下一个起始月 - 1」,超过12的数值减12即可得到实际月份

完整可运行代码

generate_seasons <- function(m_vec) {
  n_season <- length(m_vec)
  # 补全边界:最后一个季节的下一个起始月为第一个月+12,处理跨年场景
  m_vec_extend <- c(m_vec, m_vec[1] + 12)
  season_list <- list()
  
  for (i in seq_along(m_vec)) {
    start <- m_vec_extend[i]
    end <- m_vec_extend[i + 1] - 1
    # 生成序列后转换为1-12的实际月份
    season_month <- ifelse(start:end > 12, start:end - 12, start:end)
    season_list[[paste0("season", i)]] <- season_month
  }
  return(season_list)
}

测试用例验证

测试1:初始示例

m_vec <- c(3,7,11)
generate_seasons(m_vec)

输出结果和需求完全匹配:

$season1
[1] 3 4 5 6

$season2
[1]  7  8  9 10

$season3
[1] 11 12  1  2

测试2:三季分界示例

m_vec <- c(12, 5, 9)
generate_seasons(m_vec)

输出结果:

$season1
[1] 12  1  2  3  4

$season2
[1] 5 6 7 8

$season3
[1]  9 10 11

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:09:03