2016-11-20 4 views
0

У меня есть два столбца данных, один из временных меток в формате «yyyy-mm-dd hh: mm: ss» и другой числовой столбец с количеством заказов.создавать временные ряды на основе даты начала и окончания

Как определить почасовую временную шкалу столбца «нет заказов» с датой начала & дата окончания.

Я попытался следующий кодом, но получил ошибку «недопустимых параметров временных рядов, указанного»

OFS_ts <-ts(data = temp$OFS_transformed,start = temp$DateHour[1],end = temp$DateHour[nrow(temp)]) 

OFS_transformed -> количество заказов на продажу в то время штампа (данные должны быть преобразованы в временные ряды)

датаЧас -> метка времени в формате '2015-10-25 18:00:00'

темп -> набор данных

OFS_transformed DateHour 

6.89871446  2015-10-30 00:00:00 
6.1548579376 2015-10-30 01:00:00 
5.9889612322 2015-10-30 02:00:00 
6.678342022  2015-10-30 03:00:00 
5.7333410385 2015-10-30 04:00:00 
6.8741984193 2015-10-30 05:00:00 
5.4806386163 2015-10-30 06:00:00 
+0

Приведите пример данных и ожидаемый результат. – mtoto

+0

@mtoto .. Я добавил образец набора данных. Ожидаемый результат должен состоять из таймсеров OFS_transformed столбца на основе временных меток в столбце DateHour (дата начала и окончания) с частотой 1 час. Спасибо – Sreenath1986

+0

Вы посмотрели функцию 'hour' в пакете' lubridate'? Вы можете использовать его для назначения почасового идентификатора для каждого экземпляра, а затем использовать любую из многих функций группировки и суммирования, чтобы сделать следующий шаг. – ulfelder

ответ

0

Чтобы использовать функцию ts(), вам необходимо определить аргумент frequency=, который определяет периодичность ваших данных. Это зависит от типа таймсерий и частоты наблюдений. Также возможно иметь несколько сезонов.

Например, ваши почасовые данные могут быть ежедневно, (frequency=24), еженедельно (frequency=24×7=168) или месячной сезонностью (frequency=24×30=720). Обратите внимание, что этого достаточно, если указать только frequency= и start=.

# Daily seasonality 
OFS_ts <-ts(data = df$OFS_transformed, 
      start = min(df$DateHour), 
      frequency = 24) 

Одним из недостатков ts() является то, что значение дат представлены числено:

> plot(OFS_ts) 

enter image description here

возможно лучшим вариантом является функцией xts() из одноименного пакета, где frequency = аргумента даже не является обязательным:

library(xts) 
OFS_xts <- xts(temp$OFS_transformed, 
       order.by = temp$DateHour) 
plot(OFS_xts) 

enter image description here

xts объект расширяет класс ts, поэтому все функции, которые работают с ts объектов, будет также работать с xts.

+0

Спасибо, я дам ему попробовать и будет обновляться здесь .. кстати, любая идея почему мой код выше не работает? – Sreenath1986

+0

, вероятно, потому, что вы не указали 'frequency =' – mtoto

+0

Даже я тоже так думаю. Как я могу указать частоту как 1 час. Я знаю, как указывать год/месяц/квартал и т. Д., Но не час. Пожалуйста, помогите мне с этим. – Sreenath1986

Смежные вопросы