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

在R中使用lubridate从YYYYMM年月变量获取月份最后一天

实现方案(基于lubridate包)

首先加载所需依赖包:

library(lubridate)

你的示例输入数据如下:

yearmonth <- c(seq(202001,202012), 
            seq(202101,202112))

直接用以下代码即可得到你要的月份最后天数值:

# 核心逻辑:先解析为日期,再取当月最后一天提取日部分
last <- day(rollback(ym(as.character(yearmonth)) + months(1)))

也可以用另一种写法,效果完全一致:

last <- day(ceiling_date(ym(as.character(yearmonth)), unit = "month") - 1)

结果验证

输出的last变量和你给出的预期结果完全匹配:2020年2月对应29,2021年2月对应28,其余月份的最后天也完全符合公历规则。

逻辑说明

  • as.character(yearmonth):把整数型的年月值转成字符,供日期解析函数识别
  • ym():lubridate提供的便捷解析函数,会把"YYYYMM"格式的字符解析为当月1号的日期对象
  • + months(1):日期加1个月,得到下月1号的日期
  • rollback():lubridate自带函数,默认会把传入的日期回滚到上个月的最后一天,自动处理闰年、大小月问题
  • day():从日期对象中提取日部分的数值,就是你要的当月最后天数字

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:45:05