R语言中当前周为第1周时如何正确获取上一周周数?
解决当前周为第1周时获取上一周周数的问题
直接对周数做减1操作会在第1周时得到0,正确的思路应该是先计算出上一周的日期,再获取该日期对应的周数,这样就能自动适配跨年场景,得到52或53(取决于上一年的周数)。
基于lubridate的简便方案
如果你需要以周日为一周起始,用week()函数配合日期偏移即可:
library(lubridate) # 计算上周对应日期 last_week_date <- date - days(7) # 获取上周周数 last_week_num <- week(last_week_date)
如果遵循ISO周规则(周一为一周起始),则替换为isoweek():
last_week_num <- isoweek(date - days(7))
方法优势
直接对日期减去7天,会自动跳转到上一年的最后几天(当当前日期处于新年第1周时),此时调用week()或isoweek()会自动返回上一年的最后一周数,无需手动判断当前是否为第1周,逻辑简洁且不易出错。
简化写法
可以合并为一行代码:
# 周日为起始周 last_week_num <- week(date - days(7)) # ISO周(周一为起始) last_week_num <- isoweek(date - days(7))
内容的提问来源于stack exchange,提问作者awoj
相关产品推荐
相关产品推荐

