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

从R中的当前日期获取下一季度的开始,r,date,data-manipulation,R,Date,Data Manipulation,我试图从当前日期开始计算下一季度的开始日期 library(lubridate) current_date = Sys.Date() quarter(Sys.Date(), with_year= TRUE) 或者通过函数quarters.Date(Sys.Date())我可以得到quarter。我无法在上述代码中添加四分之一 默认软件包中是否有其他软件包或任何其他功能可用于此操作?1)zoo转换为“yearqtr”类,添加1/4,如果您希望季度末的日期使用frac=1应用as.date li

我试图从当前日期开始计算下一季度的开始日期

library(lubridate)
current_date = Sys.Date()
quarter(Sys.Date(), with_year= TRUE) 
或者通过函数
quarters.Date(Sys.Date())
我可以得到quarter。我无法在上述代码中添加四分之一

默认软件包中是否有其他软件包或任何其他功能可用于此操作?

1)zoo转换为
“yearqtr”
类,添加1/4,如果您希望季度末的日期使用
frac=1应用
as.date

library(zoo)

today <- Sys.Date()  # 2016-01-27
as.Date(as.yearqtr(today) + 1/4, frac = 1)
## [1] "2016-06-30"
2)R的基础。这将给出下一个季度的开始日期,没有套餐。我们使用
cut
获取当前季度的开始,转换为
“日期”
类,并添加足够的天数以到达下一季度,然后再次应用
cut
as.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")
这将返回下一季度的第一个日期。其他类似的有用功能有floor_date和round_date。可在lubridate文档中找到这两个文件:
.

谢谢@G Grothendieck。。使用上面的命令,我可以得到所需的日期,然后使用quarters.date(),我可以得到quarter。只是想知道我们是否可以从yearqtr对象访问year和qtr?如果
yq
ceiling_date(current_date, "quarter")