2014-02-17 62 views
1

我試圖在R中使用PROXISct將1分鐘數據轉換爲5分鐘。但我無法將其轉換。 我的數據是這種格式。使用R將1分鐘數據轉換爲5分鐘

 Date Time Price Volume No.of.trades 
1 01-06-2012 09:15 4901.895 283550   1286 
2 01-06-2012 09:16 4907.046 140000   831 
3 01-06-2012 09:17 4904.140 96900   639 
4 01-06-2012 09:18 4900.609 84350   553 
5 01-06-2012 09:19 4900.067 76450   516 
6 01-06-2012 09:20 4898.378 84900   551 

dt_tm <- as.POSIXct(paste(x[,1], x[,2]), 
       format="%d-%m-%Y %H:%M", tz="UTC") 
cable <- xts(x[,3:5], order.by=dt_tm) 

        Price Volume No.of.trades  
2012-01-07 09:15:00 6054.890 139750   787 
2012-01-07 09:16:00 6051.176 56550   335 
2012-01-07 09:17:00 6045.232 127400   691 
2012-01-07 09:18:00 6039.950 59950   374 
2012-01-07 09:19:00 6042.292 55450   214 
2012-01-07 09:20:00 6044.140 53600   246 

經過這一步後,我得到了一個不同的類型系列,這不在我的數據中。 此外,我要使用此代碼到我的數據轉換爲5分鐘,

colnames(cable)[1] <- "CLOSE" 
trades5 <-to.minutes5(cable, indexAt='startof', name=NULL) 

請糾正我哪裏做錯了,並建議我,如果有這種類型的數據轉換成5的任何其他方式分鐘。

我仍然面臨與data.date結構有關的問題,我的數據是日 - 月 - 年,你已經建議交換一天和幾個月,我做了同樣的事情,得到期望的結果,但在頭部它是好的但是,當我尋找的尾巴,我發現在it.initally尾部有些問題是

Date  Time  Price  Volume No.of.trades 
91561 31-05-2013 15:25 6004.504 86550   622 
91562 31-05-2013 15:26 6003.709 117750   651 
91563 31-05-2013 15:27 6000.656 160950   856 
91564 31-05-2013 15:28 5997.516 215950   1191 
91565 31-05-2013 15:29 5995.305 303200   1784 

現在用下面的代碼

dt_tm <- as.POSIXct(paste(x[,1], x[,2]), 
    format="%m-%d-%Y %H:%M", tz="UTC") 
ct <- cut(dt_tm, breaks="5 mins") 
ct_tm <- as.POSIXct(as.character(ct)) 
cable <- xts(x[,3:5], order.by=ct_tm) 
head(cable) 
        Price   Volume   No.of.trades 
2012-01-06 09:15:00 4901.895  283550   1286 
2012-01-06 09:15:00 4907.046  140000   831 
2012-01-06 09:15:00 4904.140  96900   639 
2012-01-06 09:15:00 4900.609  84350   553 
2012-01-06 09:15:00 4900.067  76450   516 
2012-01-06 09:20:00 4898.378  84900   551 

,但是當我尋找尾巴 尾(電纜)

 Price   Volume   No.of.trades 
<NA> 6004.504   86550   622 
<NA> 6003.709   117750   651 
<NA> 6000.656   160950   856 
<NA> 5997.516   215950   1191 
<NA> 5995.305   303200   1784 
<NA> 5991.419   550   8 

請幫助我,現在我錯了。

+0

日期的格式化必須是不正確的 - 也就是說,如果你會解析'2007-31-01'爲'年 - 那麼可以,但將其解析爲「年 - 月 - 日」將產生「NA」值。我想這就是發生在這裏的事情 - 在某個地方你正試圖解析值爲「禁止」的值。嘗試不同的格式,如果問題仍然存在 – Zbynek

回答

1

我想你可能會錯誤地格式化你的數據 - 交換日期和月份。

dt_tm <- as.POSIXct(paste(x[,1], x[,2]), 
      format="%m-%d-%Y %H:%M", tz="UTC") 

轉換到5分鐘的數據幀可以這樣實現:

# cut dt_tm to 5 minutes intervals 
ct <- cut(dt_tm, breaks="5 mins") 
# convert to POSIXct 
ct_tm <- as.POSIXct(as.character(ct)) 
# aggregate 
cable <- xts(x[,3:5], order.by=ct_tm) 

        Time Price  Volume 
2012-01-06 09:15:00 "09:15" "4901.895" "283550" 
2012-01-06 09:15:00 "09:16" "4907.046" "140000" 
2012-01-06 09:15:00 "09:17" "4904.140" " 96900" 
2012-01-06 09:15:00 "09:18" "4900.609" " 84350" 
2012-01-06 09:15:00 "09:19" "4900.067" " 76450" 
2012-01-06 09:20:00 "09:20" "4898.378" " 84900" 
+0

非常感謝你Zbynek – Bhavana

+0

你可以編輯你的問題嗎?這是相當難以閱讀 – Zbynek

+0

不要問新的問題,編輯這一個 – Zbynek