将每周字符串格式数据转换为每周(每周 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")
我有一个 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")