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

使用lubridate将年月格式数据转换为当月最后一天的实现方法

解决方法

你已加载dplyr和lubridate包,只需在原有日期转换逻辑的基础上,搭配lubridate内置的日期处理函数即可实现需求,共有3种常用实现方案:


方案1:调用内置last_day()函数(lubridate 1.7.0及以上版本支持,最简洁)

f %>% 
  mutate(date = last_day(ym(date)))
  • 逻辑说明:lubridate内置的last_day()函数可以直接返回输入日期所在月份的最后一天,自动适配不同月份天数、闰年2月等特殊场景。

方案2:用ceiling_date()+日期偏移实现

f %>% 
  mutate(date = ym(date) %>% 
           ceiling_date(unit = "month") - days(1))
  • 逻辑说明:ym()先把6位数值转成当月首日,ceiling_date(unit = "month")会把日期跳到下一个月的首日,再减1天就得到当前月的最后一天,兼容所有lubridate版本。

方案3:用rollback()函数实现

f %>% 
  mutate(date = rollback(ym(date) + months(1)))
  • 逻辑说明:ym(date) + months(1)先把当月首日偏移到下一个月的同日,rollback()函数会自动回退到上一个月的最后一天,逻辑直观。

以上三种方案运行后均可得到你需要的输出结果:

# A tibble: 4 × 2
  a     date      
  <chr> <date>    
1 BVH   2018-01-31
2 HBYU  2020-12-31
3 CYC   2021-12-31
4 AC    2021-09-30

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:57:03