Search code examples
rtidyversexts

How to use rownames_to_column with dates


I am trying to convert my yahoo price downloads to a "tidy" format, but in the reprex below, the dates lose their format and are converted to rownumbers. Stated differently, how do I convert from xts to tibble and preserve the dates?

prices <- getSymbols("QQQ", adjustOHLC = TRUE, auto.assign = FALSE) %>%
  as_tibble() %>%
  rownames_to_column(var = "Date")
head(prices)

Solution

  • To keep it in all in a single tidyverse pipe, simply convert to a data frame first:

    library(quantmod)
    library(tibble)
    
    getSymbols("QQQ", adjustOHLC = TRUE, auto.assign = FALSE) %>%
      as.data.frame() %>%
      rownames_to_column(var = "Date") %>%
      as_tibble()
    
    #> # A tibble: 3,419 x 7
    #>    Date       QQQ.Open QQQ.High QQQ.Low QQQ.Close QQQ.Volume QQQ.Adjusted
    #>    <chr>         <dbl>    <dbl>   <dbl>     <dbl>      <dbl>        <dbl>
    #>  1 2007-01-03     43.5     44.1    42.5      43.2  167689500         38.3
    #>  2 2007-01-04     43.3     44.2    43.2      44.1  136853500         39.1
    #>  3 2007-01-05     44.0     44.0    43.5      43.8  138958800         38.9
    #>  4 2007-01-08     43.9     44.1    43.6      43.9  106401600         38.9
    #>  5 2007-01-09     44.0     44.3    43.6      44.1  121577500         39.1
    #>  6 2007-01-10     44.0     44.7    43.8      44.6  121070100         39.6
    #>  7 2007-01-11     44.7     45.2    44.7      45.1  174029800         40.0
    #>  8 2007-01-12     45.0     45.3    45.0      45.3  104217300         40.2
    #>  9 2007-01-16     45.3     45.4    45.1      45.3   95690500         40.1
    #> 10 2007-01-17     45.1     45.3    44.8      44.9  127142600         39.8
    #> # ... with 3,409 more rows
    

    Created on 2020-08-02 by the reprex package (v0.3.0)