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

问题描述 投票:2回答:2

我想从当前日期开始下个季度。

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

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

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

r date data-manipulation
2个回答
5
投票

1)zoo转换为"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

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
投票

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

ceiling_date(current_date, "quarter")

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

© www.soinside.com 2019 - 2024. All rights reserved.