Могу ли я указать дату и время временного ряда в R? - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть набор данных, который содержит время и даты в первом столбце, а также цены на акции во втором столбце.

Я использовал следующий формат.

      Time              Price
2015-02-01 10:00         50

Я хочу превратить это в объект временного ряда. Я попробовал функцию ts (data), но когда я строю данные, я не могу наблюдать даты на оси x. Также я попробовал функцию ts (data, start =). Поскольку у меня есть несколько часов с отсутствующими ценами, и эти часы не включены в мой набор данных, если я установлю дату и частоту начала, мой график будет вводить в заблуждение.

Вот пример данных, которые у меня есть. Он называется df.

           time         price    

1   2013-05-01 00:00:00 124.30
2   2013-05-01 01:00:00 98.99
3   2013-05-01 02:00:00 64.00
4   2013-05-01 03:00:00 64.00

Это код, который я использовал

Time1 <- ts(df) 
autoplot(Time1)

Также попробовал это,

Time1 <- zoo(Time_series_data[,2], order.by = Time_series_data[,1])
Time_n <- ts(Time1)
autoplot(Time1)

Однако, когда я строю график с autoplot (Time1) ось x показывает не те времена, которые я указал, а числа от 0 до 4. Я хочу получить график объекта ts, который включает столбцы даты на оси x и значения в Y

Есть ли способ преобразовать его в объект временного ряда в R. Спасибо.

1 Ответ

1 голос
/ 18 февраля 2020

Попробуйте следующее:

Создайте некоторые данные, используя отличную функцию tribble из пакета tibble .

library(tibble)
df <- tribble(~time,      ~price,
   "2013-05-01 00:00:00", 124.30,
   "2013-05-01 01:00:00", 98.99,
   "2013-05-01 02:00:00", 64.00,
   "2013-05-01 03:00:00", 64.00)

Столбец time представляет собой класс персонажа и не может быть нанесен обычным способом. Так что конвертируйте его, используя as.Posixct. Я буду использовать здесь пакет dplyr , но это необязательно.

library(dplyr)

df <- df %>%
  mutate(time=as.POSIXct(time))

Затем преобразуем данные в объект временного ряда. Для этого требуется пакет xts , хотя я уверен, что есть и другие варианты, включая zoo .

library(xts)
df.ts <- xts(df[, -1], order.by=df$time)

Теперь вы можете визуализировать данные.

plot(df.ts)  # This should call the `plot.xts` method

А если вы предпочитаете ggplot2 .

library(ggplot2)
autoplot(df.ts)
...