2015-11-06 50 views
1

我有以下數據集,我正嘗試從變量創建時間序列模型。如何轉換日期和時間間隔以適合R中的時間序列模型

>Count 
    Date  TimeSlot UserCount 
    2013/06/11 6.00-6.10 0 
    2013/06/11 6.10-6.20 1 
    2013/06/11 6.20-6.30 0 
    2013/06/11 6.30-6.40 0 
    2013/06/11 6.40-6.50 2 
    2013/06/11 6.50-7.00 6 

如何從上面的列變量創建時間序列。

我是時間序列分析的新手,我知道給定不同的日期值,我可以使用'xts'包創建一個時間序列,如下所示。

x <- xts(Count$UserCount,Count$Date) 

但是,考慮到上述數據在日期和時間間隔中都是獨一無二的,這怎麼能做到呢?

回答

3

由於DateTimeSlot的組合是唯一的,所以您需要做的唯一一件事就是創建一個POSIXct類。

時間課的形式是6.00-6.10 , 6.10-6.20。您只能使用第一次,即6.00 , 6.10 etc.,顯然這意味着每行代表一個10分鐘的時間間隔。無論如何,當您使用匯總的時間戳時,這就是您所做的。這是正常的方式。

所以,像這樣將工作:

Count$timestamp <- as.POSIXct(paste(Count$Date, substr(Count$TimeSlot,1,4)), 
           format='%Y/%m/%d %H.%M') 

#> Count 
#  Date TimeSlot UserCount   timestamp 
#1 2013/06/11 6.00-6.10   0 2013-06-11 06:00:00 
#2 2013/06/11 6.10-6.20   1 2013-06-11 06:10:00 
#3 2013/06/11 6.20-6.30   0 2013-06-11 06:20:00 
#4 2013/06/11 6.30-6.40   0 2013-06-11 06:30:00 
#5 2013/06/11 6.40-6.50   2 2013-06-11 06:40:00 
#6 2013/06/11 6.50-7.00   6 2013-06-11 06:50:00 

然後創建您的時間序列:

library(xts) 
x <- xts(Count$UserCount, Count$timestamp) 
+0

非常感謝,特別是對用於處理綜合時間戳的解釋。它像一個魅力。 :) –

+1

在10.10-10.20這樣的開始時間裏,在時隙中使用帶有1到4個字符的substr有一個問題。它忽略了10.10中的0。所以修正是用「 - 」而不是substr來使用strsplit,如下所示。 (計數$ Date(日期時間),「 - 」),「[[」,1)' 'Count $ timestamp < - as.POSixct ,Count $ starttime),format ='%Y /%m /%d%H.%M') –

+0

非常歡迎:)以及修復這個特殊情況! – LyzandeR

相關問題