将每周字符串格式数据转换为每周(每周 7 天)xts 数据帧

Conversion of weekly - string format data to weekly(7 day week) xts data frame

我有一个 csv。包含 1997 年至 2018 年商品价格系列的文件,采用每周字符串格式,每年恰好有 52 个观测值。这意味着,一周被定义为一周七天。我想将其转换为 xts 格式的新数据框,其中包含每周(每周 7 天)时间序列数据(以便与 ugarch 包兼容)。我是 xts 格式的新手,不知道如何转换。 非常感谢您。

这是我的数据的样子;

 week        price
1997-week1    32.1
1997-week2    30.8
1997-week3    24.6
1997-week4    24.7
1997-week5    22.1
1997-week6    22.8
1997-week7    26.8
1997-week8    24
1997-week9    23.5
1997-week10   22.4
1997-week11   21.9
1997-week12   21.1
.
.
1997-week52   51.5
.
.
1998-week1    54
1998-week2    51.5
.
.
2018-week52  117.5

假设你得到的是最后注释创建的文件, 创建一个函数,week2index 将您的周列转换为 year + 0/52 for week 1,year + 1/52 for week2, ..., year + 51/52 for week52,然后使用 read.zoo 使用该索引创建一个动物园对象。最后转成ts系列。

library(zoo)

week2index <- function(x) {
  d <- read.table(text = sub("-week", " ", x))
  with(d, V1 + (V2 - 1) / 52)
}
z <- read.zoo("jay.dat", header = TRUE, FUN = week2index, regular = TRUE)
tt <- as.ts(z)

给出这个 ts 系列(或使用 zoo 系列 z):

> tt
Time Series:
Start = c(1997, 1) 
End = c(1997, 12) 
Frequency = 52 
 [1] 32.1 30.8 24.6 24.7 22.1 22.8 26.8 24.0 23.5 22.4 21.9 21.1

备注

Lines <- "week        price
1997-week1    32.1
1997-week2    30.8
1997-week3    24.6
1997-week4    24.7
1997-week5    22.1
1997-week6    22.8
1997-week7    26.8
1997-week8    24
1997-week9    23.5
1997-week10   22.4
1997-week11   21.9
1997-week12   21.1"
cat(Lines, file = "jay.dat")