2012-07-26 66 views
3

我正在處理刻度數據,並且希望將我的不規則間隔序列聚合爲1秒均勻的數據。因此,我用XTS包功能to.period:R:缺少刻度數據時勾選數據添加值

price_1m <-to.period(price,period="seconds",k=1,OHLC=FALSE) 

這裏是我得到:

2010-02-02 08:00:03 2787 
2010-02-02 08:00:04 2786 
2010-02-02 08:00:05 2787 
2010-02-02 08:00:06 2787 
2010-02-02 08:00:07 2786 
2010-02-02 08:00:08 2786 
2010-02-02 08:00:09 2786 
2010-02-02 08:00:10 2787 
2010-02-02 08:00:11 2786 
2010-02-02 08:00:14 2786 
2010-02-02 08:00:16 2786 
2010-02-02 08:00:18 2787 

我的系列合計,例如蜱數據在時間8點00分13秒失蹤8點〇〇分15秒。我想要填補那些空白與以前的滴答數據知道08:00:13和08:00:15價格在滴答滴答xts系列中缺失。 有什麼想法?

感謝

+0

你可以嘗試一個for循環開始在你的第一個時間點秒,這將檢查數據點的存在,否則插入點。有可能比這更快的方法雖然 – DiscreteCircle 2012-07-26 13:27:15

+0

相關:http://stackoverflow.com/questions/10423551/creating-regular-15-minute-time-series-from-irregular-time-series – 2012-07-26 13:29:11

回答

6

您可以合併price_1m與「空」 XTS對象,其中包含與您希望的規律間隔排列的索引,使用上na.locf。例如:

onemin <- seq(start(price_1m),end(price_1m),by="1 s") 
Price_1m <- na.locf(merge(price_1m, xts(,onemin))) 
+0

偉大的,非常感謝!你認爲這是獲得定期間隔時間序列的好方法嗎? – marino89 2012-07-26 13:46:59

+0

@ user1474263:是的。如果我不認爲這是一個好的解決方案,我就不會回答。 ;-) – 2012-07-26 14:00:53

+0

@ user1474263這與我在http://stackoverflow.com/a/11660324/841830上的回答之間的區別是我想整個會話需要1百萬條,並且在交易開始和結束時經常存在空白會話。另一個區別是我把它們保存爲NA欄,而不是使用na.locf(如果你有OHLCV欄,它不會給你提供精確的數據)。 – 2012-07-26 23:16:44

1

qmao packageMakeStrictlyRegular功能會爲你做到這一點。

這裏是?MakeStrictlyRegular

x <- align.time(.xts(1:1000, 60*1:1000))[-c(2, 4, 7, 8), ] # remove some rows at the begining 
head(x[paste((start.x <- start(x)), "/")]) 
#     [,1] 
#1969-12-31 18:02:00 1 
#1969-12-31 18:04:00 3 
#1969-12-31 18:06:00 5 
#1969-12-31 18:07:00 6 
#1969-12-31 18:10:00 9 
#1969-12-31 18:11:00 10 
x2 <- MakeStrictlyRegular(x) 
#added 4 (0.40%); There are now 1000 total rows. 
head(x2[paste(start.x, "/")]) 
#     [,1] 
#1969-12-31 18:02:00 1 
#1969-12-31 18:03:00 1 
#1969-12-31 18:04:00 3 
#1969-12-31 18:05:00 3 
#1969-12-31 18:06:00 5 
#1969-12-31 18:07:00 6 

對於您的1個第二個數據的例子,你會使用by="sec"。所以,像

MakeStrictlyRegular(price, by="sec") 
+0

qmao將不會安裝: install.packages(「qmao」,repos =「http://r-forge.r-project.org」) 警告消息:'qmao'包不可用(對於R 2.15版.2) – 2013-01-19 14:53:09

+0

@EnricoDetoma,我在github上有一個鏡像,所以你可以用'library(devtools)安裝它; install_github(「qmao」,「gsee」)'。如果這不起作用(大概是因爲你在Windows上),由於** qmao **沒有編譯代碼,所以你可以下載zip文件,將它解壓縮到你的工作目錄中並使用'install.packages'和'repos = NULL'和'type =「source」'。有關安裝無法構建的R-Forge軟件包的更一般方式,請參閱http://stackoverflow.com/questions/11105131/cannot-install-r-forge-package-using-install-packages/11105132#11105132 – GSee 2013-01-19 15:25:49