首页 > 解决方案 > 润滑到本月的最后一天

问题描述

library(dplyr)
library(lubridate)

我有一些这样的数据

f <- tribble(~a, ~date,
             "BVH", 201801,
             "HBYU", 202012,
             "CYC", 202112,
             "AC", 202109)

我需要将它转换为每月的最后一天,我这样做

f %>% mutate(date = ym(date))
# A tibble: 4 x 2
  a     date      
  <chr> <date>    
1 BVH   2018-01-01
2 HBYU  2020-12-01
3 CYC   2021-12-01
4 AC    2021-09-01

我想要的是,这个

# A tibble: 4 x 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

标签: rtidyverselubridate

解决方案


lubridaterollforward完全符合您的要求:

> f %>% mutate(date = rollforward(ym(date)))
# A tibble: 4 x 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

推荐阅读