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

R语言按周分组时如何生成带年份的唯一周ID

解决方案

你可以通过拼接周数和对应年份的方式生成唯一周标识,同时注意处理跨年周的归属问题,避免标识错乱,以下是两种常用实现方式:

方法1:直接生成指定格式的唯一周标识

直接在分组时通过format()函数生成你需要的周数-年份格式标识,无需额外字段:

df_agg <- df %>% 
  # %V代表ISO标准周(自动补零为两位,周一为周首),%Y为四位年份
  group_by(week_id = format(date, "%V-%Y")) %>% 
  summarise(value = mean(vals, na.rm = TRUE))

输出的week_id列格式为01-2015,天然区分不同年份的同序号周。

方法2:保留单独年、周字段,手动拼接标识

如果后续需要单独按年份、周数筛选数据,可以先拆分字段再拼接:

df_agg <- df %>% 
  mutate(
    # 用isoyear搭配isoweek,避免跨年周的年份归属错误
    year = isoyear(date),
    week = isoweek(date)
  ) %>% 
  group_by(year, week) %>% 
  summarise(
    value = mean(vals, na.rm = TRUE),
    # sprintf("%02d", week)实现周数小于10时自动补零
    week_id = paste0(sprintf("%02d", week), "-", year)
  )

注意事项

  • 如果你的业务规则中周起始为周日,将上述代码中的%V替换为%U,isoweek()/isoyear()替换为week()/year()即可
  • 计算聚合均值时直接使用mean()的na.rm = TRUE参数,比单独调用na.omit()更简洁高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:27:01