2014-03-26 79 views
0

我想要一個向量的OHLC小時數據的xts對象的子集。子集由矢量在r

如果我創建矢量自己用下面的命令

lookup = c("2012-01-12", "2012-01-31", "2012-03-05", "2012-03-19") 
testdfx[lookup] 
testdfx[lookup] 

我得到它顯示了正確的數據顯示,向量(00:00至23:00匹配日期的所有時間。

> head(testdfx[lookup]) 
         open high  low close 
2012-01-12 00:00:00 1.27081 1.27217 1.27063 1.27211 
2012-01-12 01:00:00 1.27212 1.27216 1.27089 1.27119 
2012-01-12 02:00:00 1.27118 1.27166 1.27017 1.27133 
2012-01-12 03:00:00 1.27134 1.27272 1.27133 1.27261 
2012-01-12 04:00:00 1.27260 1.27262 1.27141 1.27183 
2012-01-12 05:00:00 1.27183 1.27230 1.27145 1.27165 

> tail(testdfx[lookup]) 
         open high  low close 
2012-03-19 18:00:00 1.32451 1.32554 1.32386 1.32414 
2012-03-19 19:00:00 1.32417 1.32465 1.32331 1.32372 
2012-03-19 20:00:00 1.32373 1.32415 1.32340 1.32372 
2012-03-19 21:00:00 1.32373 1.32461 1.32366 1.32376 
2012-03-19 22:00:00 1.32377 1.32424 1.32359 1.32366 
2012-03-19 23:00:00 1.32364 1.32406 1.32333 1.32336 

然而,當我從一個對象中提取日期和創建用於子集我只得到00小時的載體:00-19:00在我的子集顯示

> head(testdfx[dates]) 
         open high low close 
2007-01-05 00:00:00 1.3092 1.3093 1.3085 1.3088 
2007-01-05 01:00:00 1.3087 1.3092 1.3075 1.3078 
2007-01-05 02:00:00 1.3079 1.3091 1.3078 1.3084 
2007-01-05 03:00:00 1.3083 1.3084 1.3073 1.3074 
2007-01-05 04:00:00 1.3073 1.3080 1.3061 1.3071 
2007-01-05 05:00:00 1.3070 1.3072 1.3064 1.3069 

> tail(euro[nfp.releases]) 
         open high  low close 
2014-01-10 14:00:00 1.35892 1.36625 1.35728 1.36366 
2014-01-10 15:00:00 1.36365 1.36784 1.36241 1.36743 
2014-01-10 16:00:00 1.36742 1.36866 1.36693 1.36719 
2014-01-10 17:00:00 1.36720 1.36752 1.36579 1.36617 
2014-01-10 18:00:00 1.36617 1.36663 1.36559 1.36624 
2014-01-10 19:00:00 1.36630 1.36717 1.36585 1.36702 

我比較了兩個包含require日期的對象,它們看起來是一樣的。

> class(lookup) 
[1] "character" 
> class(nfp.releases) 
[1] "character" 
> str(lookup) 
chr [1:4] "2012-01-12" "2012-01-31" "2012-03-05" "2012-03-19" 
> str(nfp.releases) 
chr [1:86] "2014-02-07" "2014-01-10" "2013-12-06" "2013-11-08" .. 

我是R的新手,但在過去的3天裏嘗試了所有這些工作。如果我不能這樣做,我將最終不得不手動創建一個變量,但是由於它有86個日期,這可能需要一些時間。

在此先感謝。

+0

a)您是如何創建'euro'的? b)您是否知道在原始'euro'數據中'2014-01-10'的日期時間已過去19:00:00? –

回答

0

我無法重現您的問題

lookup = c("2012-01-12", "2012-01-31", "2012-03-05", "2012-03-19") 

time_index <- seq(from = as.POSIXct("2012-01-01 07:00"), to = as.POSIXct("2012-05-17 18:00"), by = "hour") 

set.seed(1) 

value <- matrix(rnorm(n = 4*length(time_index)),length(time_index),4) 

testdfx <- xts(value, order.by = time_index) 

testdfx[lookup[1]] 

testdfx["2012-01-12"] 
0

感謝您的答覆傢伙其實我想我已經刪除了這個線程,但顯然不是。

上述情況中的問題是在計算機的3'附近找到的。在查看數據時,我只對週五感興趣,這也意味着外匯市場在本週末關閉。

對不起,浪費你的時間和管理請刪除。