润滑到每月的最后一天
lubridate to last day of month
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
lubridate 的 rollforward
完全符合您的要求:
> 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
这里有另外两种方法 -
library(dplyr)
library(lubridate)
f %>%
mutate(date = ym(date),
date1 = date + months(1) - 1,
date2 = ceiling_date(date, 'month') - 1)
# a date date1 date2
# <chr> <date> <date> <date>
#1 BVH 2018-01-01 2018-01-31 2018-01-31
#2 HBYU 2020-12-01 2020-12-31 2020-12-31
#3 CYC 2021-12-01 2021-12-31 2021-12-31
#4 AC 2021-09-01 2021-09-30 2021-09-30
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
lubridate 的 rollforward
完全符合您的要求:
> 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
这里有另外两种方法 -
library(dplyr)
library(lubridate)
f %>%
mutate(date = ym(date),
date1 = date + months(1) - 1,
date2 = ceiling_date(date, 'month') - 1)
# a date date1 date2
# <chr> <date> <date> <date>
#1 BVH 2018-01-01 2018-01-31 2018-01-31
#2 HBYU 2020-12-01 2020-12-31 2020-12-31
#3 CYC 2021-12-01 2021-12-31 2021-12-31
#4 AC 2021-09-01 2021-09-30 2021-09-30