How can I change XTS to data.frame and keep Index?

后端 未结 6 2009
时光说笑
时光说笑 2020-12-02 11:11

I have an XTS timeseries in R of the following format and am trying to do some processing, subsetting and re-arranging before exporting as a CSV for work in another program.

6条回答
  •  我在风中等你
    2020-12-02 11:57

    You can convert an xts object to a data.frame that includes the index as a column named "Index" with zoo::fortify.zoo().

    You don't need ggplot2, but this will still work if you have xts (or zoo) and ggplot2 loaded.

    For example:

    library(xts)
    data(sample_matrix)
    x <- as.xts(sample_matrix, dateFormat = "Date")
    my_df <- fortify.zoo(x)
    head(my_df)
    #        Index     Open     High      Low    Close
    # 1 2007-01-02 50.03978 50.11778 49.95041 50.11778
    # 2 2007-01-03 50.23050 50.42188 50.23050 50.39767
    # 3 2007-01-04 50.42096 50.42096 50.26414 50.33236
    # 4 2007-01-05 50.37347 50.37347 50.22103 50.33459
    # 5 2007-01-06 50.24433 50.24433 50.11121 50.18112
    # 6 2007-01-07 50.13211 50.21561 49.99185 49.99185
    str(my_df)
    # 'data.frame': 180 obs. of  5 variables:
    #  $ Index: Date, format: "2007-01-02" "2007-01-03" ...
    #  $ Open : num  50 50.2 50.4 50.4 50.2 ...
    #  $ High : num  50.1 50.4 50.4 50.4 50.2 ...
    #  $ Low  : num  50 50.2 50.3 50.2 50.1 ...
    #  $ Close: num  50.1 50.4 50.3 50.3 50.2 ...
    

提交回复
热议问题