[英]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.