XTS无法将日期时间识别为适当的基于时间的对象

问题描述

我正在使用R。我有一些值和日期时间索引。我想将小标题转换为xts。

这里是示例数据和我使用的代码

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])

尽管如此,我仍然遇到以下错误

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

有什么想法在推动这一趋势吗?日期时间应该是一个适当的基于时间的对象。非常感谢。

解决方法

order_by的参数必须是向量。当您使用tbl_dffoo[,bar]中提取内容时,返回的对象的类别不是向量,而是tbl_df。使用df[[4]]

,

您应该重新检查每个步骤,然后检查您得到了什么。实际上,我发现在 one 容器中最简单的方法。您可以使用tbl,我碰巧喜欢data.frame

因此,让我们首先根据您的数据构建一个data.frame

R> Date <- c("2010-01-04","2010-01-04")
R> Time <- c("04:00:00","06:00:00")
R> value <- c(1,2)
R> df <- data.frame(Date=Date,Time=Time,value=value)
R> df
        Date     Time value
1 2010-01-04 04:00:00     1
2 2010-01-04 06:00:00     2
R> 

然后整理并解析日期和时间信息并进行检查:

R> df[,"pt"] <- as.POSIXct(paste(Date,Time))
R> df
        Date     Time value                  pt
1 2010-01-04 04:00:00     1 2010-01-04 04:00:00
2 2010-01-04 06:00:00     2 2010-01-04 06:00:00
R> 

此后,只需调用具有正确组件的xts

R> x <- xts(df[,"value"],order.by=df[,"pt"])
R> x
                    [,1]
2010-01-04 04:00:00    1
2010-01-04 06:00:00    2
R> 

编辑或者您可以一步一步完成而没有任何其他软件包,但放弃了逐步执行以下中间步骤的能力:

R> x2 <- xts(value,order.by=as.POSIXct(paste(Date,Time)))
R> x2
                    V1
2010-01-04 04:00:00  1
2010-01-04 06:00:00  2
R> all.equal(x,x2)
[1] TRUE
R>