Search code examples
rxts

XTS does not recognize datetime as an appropriate time-based object


I am using R. I have a tibble of values and a datetime index. I want to convert the tibble in an xts.

Here you are sample data and the code I use:

Date <- c("2010-01-04" , "2010-01-04")
Time <- c("04:00:00", "06:00:00")
value <- c(1, 2)          
df <- as_tibble(value) %>% add_column(Date = Date, Time = Time)
df <- df %>% mutate(datetime = as.POSIXct(paste(Date, Time), format="%Y-%m-%d %H:%M:%S"))

library(xts)
dfxts <- as.xts(df[,1], order.by=df[,4])

Nevertheless, I get the following error:

Error in xts(x, order.by = order.by, frequency = frequency, ...) : 
    order.by requires an appropriate time-based object

Any idea what is driving this? Datetime should be an appropriate time-based object... Many thanks.


Solution

  • The argument to order_by must be a vector. When you extract from a tbl_df using foo[,bar] the class of the returned object is not a vector, it is a tbl_df. Use df[[4]].