【问题标题】:Conversion of weekly - string format data to weekly(7 day week) xts data frame每周 - 字符串格式数据到每周(每周 7 天)xts 数据帧的转换
【发布时间】:2020-12-18 19:02:22
【问题描述】:

我有一个 csv。包含从 1997 年到 2018 年的商品价格系列的文件,采用每周 - 字符串格式,每年正好有 52 个观察值。这意味着,一周被定义为一周 7 天。我想将其转换为 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

【问题讨论】:

    标签: r time-series xts


    【解决方案1】:

    假设你拥有的是最后由 Note 创建的文件, 创建一个函数,week2index,它将您的周列转换为形式 year + 0/52 表示第 1 周,year + 1/52 表示第 2 周,...,year + 51/52 表示第 52 周,然后使用 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")
    

    【讨论】:

    • @Ronak Shah 非常感谢您的快速回复。我实际上希望最终输出为 xts.format。据我所知,在这里,最终输出在 ts 中。格式
    • xts 不支持索引的 numerc 格式。您可以使用答案中提供的 use zoo 或 ts 。我不是罗纳克·沙阿。
    • 。谢谢。对不起!
    猜你喜欢
    • 2014-07-17
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    • 2019-11-21
    • 1970-01-01
    • 2013-05-02
    相关资源
    最近更新 更多