【问题标题】:How can I convert datetime format in R to be read for a Time-Series prediction model?如何将 R 中的日期时间格式转换为时间序列预测模型读取?
【发布时间】:2021-07-25 06:35:20
【问题描述】:

我有以下类型的金融证券交易所数据集,使用 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 模型。每一天的日期和时间列唯一地标识了未来几个月内每一天每一秒的商品价格变化。图表大大缩短了。

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

【问题讨论】:

  • 帮助我们帮助您。请删除图像并粘贴dput(head(df, 7)) 的结果,以便我们复制和粘贴您的数据并尝试一些可能的解决方案。
  • 我刚刚安排好了这个。感谢您指出这一点。
  • 数据中的时间,¿是秒、小时还是分钟?
  • 秒数。

标签: python r datetime time-series


【解决方案1】:

我会尝试借助一些软件包来解决这个问题。

第一个将字符日期转换为实际日期的 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 是包 lubridate 的函数,持续时间以秒为单位(请参阅 ?dseconds)。

现在要将其转换为时间序列,我会使用包zoo,因为它允许您使用不规则的时间序列:

library(zoo)

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

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

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

【讨论】:

    猜你喜欢
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2016-02-26
    • 2016-02-07
    • 2019-09-03
    相关资源
    最近更新 更多