繁体   English   中英

如何转换 R 中的日期时间格式以读取时间序列预测 model?

[英]How can I convert datetime format in R to be read for a Time-Series prediction model?

我有以下类型的金融证券交易所数据集,使用 dput(head(data3, 7))

structure(list(X = 0:6, 
               Unnamed..0 = 0:6, 
               date = c("2022-01-04", "2022-01-04", "2022-01-04", "2022-01-04", "2022-01-04", "2022-01-04", "2022-01-04"), 
               time = c(7.089, 8.619, 8.908, 9.588, 10.744, 10.931, 10.931), 
               price = c(263, 259, 259, 260, 258, 258, 259), qty = c(2L, 1L, 2L, 2L, 2L, 2L, 3L), 
              datetime = c("2022-01-04 8:00:07.089000", "2022-01-04 8:00:08.619000", "2022-01-04 8:00:08.908000", "2022-01-04 8:00:09.588000", "2022-01-04 8:00:10.744000", "2022-01-04 8:00:10.931000", "2022-01-048:00:10.931000")), 
      row.names = c(NA, 7L), 
      class = "data.frame")

我正在尝试对其应用 ARIMA model。 每一天的日期和时间列唯一地标识了未来几个月内每一天每一秒的商品价格变化。 该图只是大大缩短了。

在这种情况下,如何更改此日期和时间以供 R/Python 中的 ARIMA model 有效使用?

我将尝试在一些软件包的帮助下解决这个问题。

首先 lubridate 将字符日期转换为实际日期:

library(lubridate)

# assuming it is in Year - month - day. If its Year - day - month, use ydm(data3$date)
data3$date = ymd(data3$date) 

现在我们需要能够观察到我们确实添加了几分之一秒,所以我将更改选项(默认情况下只显示整秒):

options(digits.secs = 6)

然后我将秒添加到日期并创建一个新变量:

data3$dateTime = data3$date + dseconds(data3$time)

这里dseconds是 package 润滑液的 function ,持续时间以秒为单位(参见?dseconds )。

现在要将其转换为时间序列,我将 go 与 package zoo一起使用,因为它允许您使用不规则的时间序列:

library(zoo)

newTS = zoo(data3$price, order.by = data3$dateTime)

请注意,使用您提供的数据,zoo 会抱怨 not unique index 那是因为最后两个观察共享相同的日期和时间(这可能是一个错误?)。

然后,您可以对新的时间序列执行任何操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM