2011-12-26 21 views
0

分xtsデータの特定の行(1日のうちの特定の分)を取得しようとしています。私はいくつかのことを試しましたが、奇妙なことは一つしかありません。特定の分の分xtsオブジェクトからデータを取得する

> last(UpRatio["T10:14:00/T10:15:00"]) 
       TICK.NYSE.Close 
2011-12-23 10:15:00  0.7608696 

これも動作:

UpRatio

[(as.POSIXlt(指数(UpRatio))、(時間== 10 &分== 15))付き]
    TICK.NYSE.Close 
2011-12-23 10:15:00  0.7608696 

私が最も直感的なことをしようとすると、私は1行を期待しながら何も得られません。なぜ以下のコードは動作しませんか?

> UpRatio["T10:15:00"] 
TICK.NYSE.Close 

私は全体XTSオブジェクトを取得する次の明白なことを行うにしようとした場合:

> UpRatio["10:15:00"] 
       TICK.NYSE.Close 
2011-12-23 09:30:00  1.0000000 
2011-12-23 09:31:00  1.0000000 
2011-12-23 09:32:00  1.0000000 
2011-12-23 09:33:00  1.0000000 
2011-12-23 09:34:00  0.8000000 
2011-12-23 09:35:00  0.8333333 
2011-12-23 09:36:00  0.8571429 
2011-12-23 09:37:00  0.8750000 
2011-12-23 09:38:00  0.7777778 
2011-12-23 09:39:00  0.8000000 
2011-12-23 09:40:00  0.8181818 
2011-12-23 09:41:00  0.7500000 
2011-12-23 09:42:00  0.6923077 
2011-12-23 09:43:00  0.7142857 
2011-12-23 09:44:00  0.6666667 
2011-12-23 09:45:00  0.6250000 
2011-12-23 09:46:00  0.6470588 
2011-12-23 09:47:00  0.6666667 
2011-12-23 09:48:00  0.6315789 
2011-12-23 09:49:00  0.6500000 
2011-12-23 09:50:00  0.6666667 
2011-12-23 09:51:00  0.6818182 
2011-12-23 09:52:00  0.6956522 
2011-12-23 09:53:00  0.7083333 
2011-12-23 09:54:00  0.7200000 
2011-12-23 09:55:00  0.7307692 
2011-12-23 09:56:00  0.7407407 
2011-12-23 09:57:00  0.7500000 
2011-12-23 09:58:00  0.7586207 
2011-12-23 09:59:00  0.7666667 
2011-12-23 10:00:00  0.7419355 
2011-12-23 10:01:00  0.7500000 
2011-12-23 10:02:00  0.7575758 
2011-12-23 10:03:00  0.7647059 
2011-12-23 10:04:00  0.7428571 
2011-12-23 10:05:00  0.7500000 
2011-12-23 10:06:00  0.7567568 
2011-12-23 10:07:00  0.7631579 
2011-12-23 10:08:00  0.7692308 
2011-12-23 10:09:00  0.7750000 
2011-12-23 10:10:00  0.7804878 
2011-12-23 10:11:00  0.7857143 
2011-12-23 10:12:00  0.7906977 
2011-12-23 10:13:00  0.7954545 
2011-12-23 10:14:00  0.7777778 
2011-12-23 10:15:00  0.7608696 
2011-12-23 10:16:00  0.7446809 
... 

を私はここで何をしないのですか?私は何を理解していないのですか?

+0

XTSについてあまり知らないで(よりも簡単)のようになります。しかし問題は、あなたがPOSIXの仕事をするキャラクターを送ることであると思います。(あなたが 'as.POSIXlt'で'文字 'を変換した時にすでに実証したように)。 –

答えて

2

時刻のサブセットは、現在のところ範囲でのみ動作します。 last(UpRatio["T10:14:00/T10:15:00"])の代わりにUpRatio["T10:14:59.999/T10:15:00"]を使用できます。また、あなたのオブジェクトのの毎日の10:15時間を返します。

+0

ジョシュア、ありがとう。 – Samo

0

あなたは完全な日付スタンプを使用している場合は、あなたの直感は、予想通り、それは動作します:

UpRatio["2011-12-23 10:15:00"] 

あなたがすべて日から10時15分00秒のバーを望んでいた場合は、これはちょっと短い(と明確)であるよりあなたのPOSIXltバージョン:

UpRatio[grepl('10:15:00',index(UpRatio)] 
0

または、sourceをハックします。例えば。

if(length(i) == 1 && !identical(integer(),grep("^T.*?/T",i[1]))) { ... } 

あなたが(未テスト)記述することができます:ちょうどこのブロックの後に

else if(length(i) == 1 && !identical(integer(),grep("^T.*?",i[1]))) { 
    i <- gsub("T|:","",i) 
    i <- .makeISO8601T(x, i[1]) 
} 

その後、makeISO8601Tを()記述する必要があります。これは、parse8601.T の終わりにmakeISO8601TT()関数(私は場合には他の誰かが、完全なパッチを追加したい、このコミュニティのwikiを作りました。)

関連する問題