将季度解析为日期,使用 "qr()" 到季度的最后一天

parse quarters to dates, using "qr()" to last day in quarter

我的任务有点类似于, but I'm using 。我有一些 string-quarters 需要翻译成日期,但不是这样获取季度的第一天,

# library(lubridate)
quaters <- c("2018Q4", "2019Q1", "2019Q2", "2019Q3", "2019Q4", "2020Q1")
 
yq(quaters)
# [1] "2018-10-01" "2019-01-01" "2019-04-01" "2019-07-01" "2019-10-01"
# [6] "2020-01-01"

我想要本季度的最后一天。像这样,

yq(quaters, last) "!! NOT WOKRING CODE
# [1] "2018-12-31" "2019-03-31" "2019-06-30" "2019-09-30" "2019-12-31"
# [6] "2020-03-31"

您可以将每个日期加上 3 个月并减去 1 天以获得每个季度的最后一天。

library(lubridate)
quaters <- c("2018Q4", "2019Q1", "2019Q2", "2019Q3", "2019Q4", "2020Q1")

yq(quaters) %m+% months(3) - 1
#[1] "2018-12-31" "2019-03-31" "2019-06-30" "2019-09-30" "2019-12-31" "2020-03-31"

另一个类似的选项是使用 ceiling_dateunit 作为 "quarter" 来获取下一个季度的日期,然后从中减去 1 天。

ceiling_date(yq(quaters), 'quarter') - 1

我们可以使用 as.yearqtr 来自 zoo

library(zoo)
as.Date(as.yearqtr(quaters), 1)
#[1] "2018-12-31" "2019-03-31" "2019-06-30" "2019-09-30" "2019-12-31" "2020-03-31"

数据

quaters <- c("2018Q4", "2019Q1", "2019Q2", "2019Q3", "2019Q4", "2020Q1")