【问题标题】:R - Transform Data frame to Time Series [duplicate]R - 将数据帧转换为时间序列
【发布时间】:2013-11-07 12:10:52
【问题描述】:

我有一个 Google 股票数据。它有两列 Date(Daily Data) 和 Close,即 Google 收盘索引。

Date    Close
10/11/2013  871.99
10/10/2013   868.24
10/9/2013    855.86
10/8/2013   853.67
10/7/2013   865.74
10/4/2013   872.35
10/3/2013   876.09
10/2/2013   887.99
10/1/2013   887
9/30/2013   875.91
9/27/2013   876.39
9/26/2013   878.17
9/25/2013   877.23
9/24/2013   886.84

它是 csv 格式,我通过 read.csv 读取它,它返回数据框对象。当我尝试将其转换为 timeseries / ts() 对象时,它返回不需要的数字。

请帮我将数据框转换为 ts() 对象。

提前致谢。

【问题讨论】:

    标签: r time-series


    【解决方案1】:

    我建议使用xts 而不是ts,因为它有很多功能,尤其是对于金融时间序列。 如果您的数据在 data.frame DF 中,那么您可以将其转换为 xts,如下所示

    xts(DF$Close, as.Date(DF$Date, format='%m/%d/%Y')
    

    【讨论】:

    • 我需要ts格式的数据,因为我在预测中需要这个对象。
    • @geektrader,format 不应该是 format='%m/%d/%Y'
    • @Jilber 谢谢.. 已更正。
    • 好吧,你建议...但是为什么呢?是什么让 xts 比 ts 更好?
    【解决方案2】:

    这是一种使用 zoo 包中的 zoo 的方法,然后将结果强制为 ts

    > library(zoo)
    > ZOO <- zoo(df$Close, order.by=as.Date(as.character(df$Date), format='%m/%d/%Y'))
    > ZOO
    2013-09-24 2013-09-25 2013-09-26 2013-09-27 2013-09-30 2013-10-01 2013-10-02 2013-10-03 2013-10-04 
        886.84     877.23     878.17     876.39     875.91     887.00     887.99     876.09     872.35 
    2013-10-07 2013-10-08 2013-10-09 2013-10-10 2013-10-11 
        865.74     853.67     855.86     868.24     871.99 
    > ts(ZOO)  # coercing to be `ts`
    Time Series:
    Start = 1 
    End = 14 
    Frequency = 1 
     [1] 886.84 877.23 878.17 876.39 875.91 887.00 887.99 876.09 872.35 865.74 853.67 855.86 868.24
    [14] 871.99
    attr(,"index")
     [1] "2013-09-24" "2013-09-25" "2013-09-26" "2013-09-27" "2013-09-30" "2013-10-01" "2013-10-02"
     [8] "2013-10-03" "2013-10-04" "2013-10-07" "2013-10-08" "2013-10-09" "2013-10-10" "2013-10-11"
    

    【讨论】:

    • 感谢 Jiber.. 但是当我尝试在 ts() 对象上方 plot 时,我在 x 轴上得到了一些像 0,50,100.... 这样的数字,但它应该是 date
    • @Ajay 请阅读 G. Grothendieck 在this question 上的解释。
    • 使用forecast 包时首选zoo 方法(因为zoo 是在forecast 时加载的)。
    猜你喜欢
    • 2020-03-14
    • 1970-01-01
    • 2018-02-08
    • 2017-12-13
    • 2022-11-01
    • 1970-01-01
    • 2020-08-08
    相关资源
    最近更新 更多