从 R 中的当前日期获取下一季度的开始

Get beginning of next quarter from current Date in R

我正在尝试从当前日期开始计算下一季度的开始时间。

library(lubridate)
current_date = Sys.Date()
quarter(Sys.Date(), with_year= TRUE) 

或者从函数 quarters.Date(Sys.Date()) 我可以获得四分之一。我无法在上面的代码中添加四分之一。

是否有我可以使用的任何其他包或默认包中的任何其他功能来执行此操作?

1) zoo 转换为 "yearqtr" class,加上 1/4,如果你想要季度末的日期应用 as.Date 使用 frac = 1

library(zoo)

today <- Sys.Date()  # 2016-01-27
as.Date(as.yearqtr(today) + 1/4, frac = 1)
## [1] "2016-06-30"

如果您想要季度开始,请省略 frac=1。如果您想要 "yearqtr" 对象,请省略 as.Date

as.yearqtr(today) + 1/4
[1] "2016 Q2"

2) R 的碱基。这将给出没有包裹的下一季度的开始日期。我们使用 cut 获取当前季度的开始,转换为 "Date" class 并添加足够的天数以到达下一季度并应用 cutas.Date 再次:

as.Date(cut(as.Date(cut(today, "quarter")) + 100, "quarter"))
## [1] "2016-04-01"

如果你想在季度末添加足够的天数以到达下一季度的第二个并减去 1 天以到达上一季度的末尾:

as.Date(cut(as.Date(cut(today, "quarter")) + 200, "quarter")) - 1
## [1] "2016-06-30"

以上答案确实有效。如果您想利用 lubridate 库,可以使用以下内容:

ceiling_date(current_date, "quarter")

这将是 return 下个季度的第一个日期。其他类似的有用函数是 floor_date 和 round_date。两者都可以在 lubridate 文档中找到 - https://cran.r-project.org/web/packages/lubridate/lubridate.pdf.