2016-11-20 191 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 - >號中的該時間戳記銷售訂單(該數據將被轉換成時間序列)

DateHour - >時間戳格式 '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 ..我已添加示例數據集。預期的輸出是基於DateHour列中的時間戳(開始和結束日期)以1小時的頻率具有OFS_transformed列的時間序列。謝謝 – Sreenath1986

+0

你看包'lubridate'中的'hour'功能嗎?您可以使用它爲每個實例分配一個小時ID,然後使用許多分組和彙總函數中的任何一個來執行下一步。 – 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

甲也許更好的選擇來自相同命名的包,其中,所述frequency =參數是函數xts()甚至不是強制性的:

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

可能是因爲你還沒有指定'頻率=' – mtoto

+0

即使我也這麼認爲..我怎麼能指定頻率爲1小時。我知道如何指定年/月/季等,但不是小時。請你幫幫我吧。 – Sreenath1986

相關問題