Home > front end >  Convert tibble to xts for analysis with performanceanalytics package
Convert tibble to xts for analysis with performanceanalytics package

Time:03-15

I have a tibble with a date and return column, that looks as follows:

> head(return_series)
# A tibble: 6 x 2
  date      return
  <chr>      <dbl>
1 2002-01  0.0292 
2 2002-02  0.0439 
3 2002-03  0.0240 
4 2002-04  0.00585
5 2002-05 -0.0169 
6 2002-06 -0.0686 

I first add the day to the date column with the following code:

return_series$date <- as.Date(as.yearmon(return_series$date))

# A tibble: 6 x 2
  date         return
  <date>        <dbl>
1 2002-01-01  0.0292 
2 2002-02-01  0.0439 
3 2002-03-01  0.0240 
4 2002-04-01  0.00585
5 2002-05-01 -0.0169 
6 2002-06-01 -0.0686 

My goal is to convert the return_series tibble to xts data to use it for further analysis with the PerformanceAnalytics package. But when I use the command as.xts I receive the following error:

Error in as.POSIXlt.character(x, tz, ...) : 
  character string is not in a standard unambiguous format

How can I change the format to xts or is there an other possibility to work with the PerformanceAnalytics package instead of converting to xts?

Thank you very much for your help!

CodePudding user response:

You need to follow the xts documentation more closely:

> tb <- as_tibble(data.frame(date=as.Date("2002-01-01")   (0:5)*30, 
                             return=rnorm(6)))
> tb
# A tibble: 6 × 2
  date       return
  <date>      <dbl>
1 2002-01-01  0.223
2 2002-01-31 -0.352
3 2002-03-02  0.149
4 2002-04-01  1.42 
5 2002-05-01 -1.04 
6 2002-05-31  0.507
> 
> x <- xts(tb[,-1], order.by=as.POSIXct(tb[[1]]))
> x
                       return
2001-12-31 18:00:00  0.222619
2002-01-30 18:00:00 -0.352288
2002-03-01 18:00:00  0.149319
2002-03-31 18:00:00  1.421967
2002-04-30 19:00:00 -1.035087
2002-05-30 19:00:00  0.507046
> 

An xts object prefers a POSIXct datetime object, which you can convert from a Date object. For a (closely-related) zoo object you could keep Date.

  • Related