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

时间:2016-01-28 00:23:25

标签: r date data-manipulation

我正试图从当前日期开始下个季度。

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

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

我可以使用其他任何软件包或默认软件包中的任何其他功能吗?

2 个答案:

答案 0 :(得分:5)

1)动物园转换为"yearqtr"课程,添加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。如果您想要as.Date对象,请忽略"yearqtr"

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

2)R 的基础。这将给出下一季度的开始日期,没有包裹。我们使用cut来获取当前季度的开头,转换为"Date"课程并添加足够的天数以进入下一季度并再次应用cutas.Date:< / p>

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"

答案 1 :(得分:1)

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

ceiling_date(current_date, "quarter")

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