gpt4 book ai didi

r - 如何将季度数据的日期系列读入 R?

转载 作者:行者123 更新时间:2023-12-03 00:08:42 24 4
gpt4 key购买 nike

我有一个数据集,其第一列是格式为“年-季度”的日期,如下所示

 1959-I   
1959-II
1959-III
1959-IV
1960-I
1960-II
1960-III
1960-IV

我已将数据集导入到 R 中,但我不知道如何使用 as.Date 函数将其转换为 Date 格式,因为 there doesn't appear to be a conversion specification for quarters我刚刚开始学习 R。

我能想到的最好的就是这样

#extract the year
> dates <- substring(data$X,1,4)
> dates[1:8]
[1] "1959" "1959" "1959" "1959" "1960" "1960" "1960" "1960"
> dates <- as.numeric(dates)

#extract the quarter
> quarters <- substring(data$X,6)
> quarters[1:10]
[1] "I " "II " "III " "IV " "I " "II " "III " "IV "

但这可能不是最好的方法,而且它仍然给我留下了如何处理我的系列四分之一的问题。更糟糕的是,每个字符末尾都有一个空白字符,我不知道如何处理,因为四分之一字符串有 3 种不同的“长度”。

当然,另一种选择是制作我自己的宿舍系列,例如

quarters <- rep(c(1,2,3,4),dates[length(dates)]-dates[1])

(我为自己写下了最后一行感到非常自豪!)。

所以我的问题:是否有一种内置方法可以以 R 中的格式导入季度数据,如果没有,可以使用任何其他格式(仍然适用于季度数据)?关于最佳的继续方式有什么建议吗?

最佳答案

假设我们有数据 1:8,对应于您提到的 8 个季度。那么我们可以这样做:

ts(1:8, start = c(1959, 1), frequency = 4)
## Qtr1 Qtr2 Qtr3 Qtr4
## 1959 1 2 3 4
## 1960 5 6 7 8

zoo 包还有 "yearqtr" 类:

 library(zoo)

z <- zooreg(1:8, start = as.yearqtr("1959-1"), frequency = 4)
z
## 1959 Q1 1959 Q2 1959 Q3 1959 Q4 1960 Q1 1960 Q2 1960 Q3 1960 Q4
## 1 2 3 4 5 6 7 8

如果我们确实有一个不一定连续的季度向量:

dt <- c("1959-I", "1959-II", "1959-III", "1959-IV", "1960-I", "1960-II", 
"1960-III", "1960-IV")

我们可以使用gsubfn转换它们:

library(gsubfn)

g <- gsubfn("I.*", list(`I` = 1, `II` = 2, `III` = 3, `IV` = 4), dt)
g
## [1] "1959-1" "1959-2" "1959-3" "1959-4" "1960-1" "1960-2" "1960-3" "1960-4"

as.yearqtr(g)
## [1] "1959 Q1" "1959 Q2" "1959 Q3" "1959 Q4" "1960 Q1" "1960 Q2" "1960 Q3"
## [8] "1960 Q4"

关于r - 如何将季度数据的日期系列读入 R?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8514662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com