r语言 - 创建从起始日期开始的年/季度向量



我有一个字符串开始日期,比如"2021 Q3"我想在开始日期之后创建一个"年/季度"向量。例如,如果所需的长度是5,那么输出将是

"2021 Q3"2021 Q4"2022 Q1"2022 Q2"2022 Q3"

我试着用as.Date()来表示R进制,但是没有效果。

在R中是否有一种简洁的方法来做到这一点?

将输入的x转换为yearqtr类。它将年份和季度内部表示为年+ 0,1/4,1/2和3/4,所以只需添加所需的季度数。它呈现如图所示。更多信息请参见?yearqtr

library(zoo)
x <- "2021 Q3"
as.yearqtr(x) + seq(0, length = 5) / 4
## [1] "2021 Q3" "2021 Q4" "2022 Q1" "2022 Q2" "2022 Q3"

我写这个荒谬的函数很有趣,然后看到G.Grothendieck的伟大答案,我笑了笑自己:

library(lubridate)
library(stringr)
f <- function(s,n) {
y=as.numeric(str_extract(s,"\d{4}"))
q = as.numeric(str_extract(s,"(?<=Q)\d+"))
dates = seq(make_date(y,q*3,15),by="quarter", length.out=n)
paste0(year(dates), " Q", quarter(dates))
}

用法:

f("2020 Q2",30)
输出:

[1] "2020 Q2" "2020 Q3" "2020 Q4" "2021 Q1" "2021 Q2" "2021 Q3" "2021 Q4" "2022 Q1" "2022 Q2" "2022 Q3" "2022 Q4" "2023 Q1" "2023 Q2" "2023 Q3" "2023 Q4" "2024 Q1"
[17] "2024 Q2" "2024 Q3" "2024 Q4" "2025 Q1" "2025 Q2" "2025 Q3" "2025 Q4" "2026 Q1" "2026 Q2" "2026 Q3" "2026 Q4" "2027 Q1" "2027 Q2" "2027 Q3"

最新更新