2012-03-19 23 views
4

インデックスにミリ秒が含まれるxtsオブジェクトを作成するにはどうすればよいですか?私はPOSIXltのヘルプページでフォーマット指定を見つけることができませんが、indexFormat()に%OSにはreferenceがあります。ギャビンの動物園の回答に基づいてRxts:ミリ秒インデックス

XTS例

UPDATE:

> options(digits.secs = 3) 
> data(sample_matrix) 
> sample.xts = xts(sample_matrix, Sys.time() + seq(0, by = 0.1, length = 180)) 
> head(sample.xts) 
          Open  High  Low Close 
2012-03-20 08:49:02.820 50.03978 50.11778 49.95041 50.11778 
2012-03-20 08:49:02.920 50.23050 50.42188 50.23050 50.39767 
2012-03-20 08:49:03.020 50.42096 50.42096 50.26414 50.33236 
2012-03-20 08:49:03.120 50.37347 50.37347 50.22103 50.33459 
2012-03-20 08:49:03.220 50.24433 50.24433 50.11121 50.18112 
2012-03-20 08:49:03.320 50.13211 50.21561 49.99185 49.99185 

答えて

6

これはパッケージ動物園で動作しますので、私は後者が前者の上に構築として、それはXTSでも動作します疑います。

> ## create some times with milliseconds 
> times <- Sys.time() + seq(0, by = 0.1, length = 10) 
> times 
[1] "2012-03-19 22:10:57.763 GMT" "2012-03-19 22:10:57.863 GMT" 
[3] "2012-03-19 22:10:57.963 GMT" "2012-03-19 22:10:58.063 GMT" 
[5] "2012-03-19 22:10:58.163 GMT" "2012-03-19 22:10:58.263 GMT" 
[7] "2012-03-19 22:10:58.363 GMT" "2012-03-19 22:10:58.463 GMT" 
[9] "2012-03-19 22:10:58.563 GMT" "2012-03-19 22:10:58.663 GMT" 
> ZOO <- zoo(1:10, order = times) 
> index(ZOO) 
[1] "2012-03-19 22:10:57.763 GMT" "2012-03-19 22:10:57.863 GMT" 
[3] "2012-03-19 22:10:57.963 GMT" "2012-03-19 22:10:58.063 GMT" 
[5] "2012-03-19 22:10:58.163 GMT" "2012-03-19 22:10:58.263 GMT" 
[7] "2012-03-19 22:10:58.363 GMT" "2012-03-19 22:10:58.463 GMT" 
[9] "2012-03-19 22:10:58.563 GMT" "2012-03-19 22:10:58.663 GMT" 

ミリ秒を参照するにはトリックがoptions()経由digits.secsオプションを変更することです。上記使用して実行:

あなたは options(opts)を行うことによって、デフォルト(0)にこれをリセットすることができ

> opts <- options(digits.secs = 3) 

を使用して設定されている

> getOption("digits.secs") 
[1] 3 

digits.secsはデフォルトで0になっているため、デフォルトでRは秒未満の情報を出力しません。データは印刷されていなくても1秒未満の精度で記録されます。

これがあなたの意図したものでない場合は、それが機能していなかったことを説明できますか?

+0

Gavin、参考までに、ミリ秒はインデックスの小数部で指定されていますか? –

+0

はい、申し訳ありませんが、事の 'POSIXt'側について説明しませんでした。 'Sys.time()'はミリ秒単位の精度に戻り、0.1秒単位でシーケンスを追加しました。 Rはデフォルトのオプションを指定するだけでこれを隠します。あなたの実際の時間で、秒が小数である場合、小秒ビットを表す '.'の後のビットで、Rは** input **の'%S'プレースホルダーでその罰金を処理します。 On出力** '%S'は秒未満のビットを削除しますが、'%OSn'プレースホルダはそれらを保存します。 'n'は、秒の桁数を指定する' 0:6 'の範囲の数値です。 'n 'がなければ、' getOption( "digits.secs") 'が使われます。 –

+0

@RobertKubrickは、使用するプレースホルダの詳細とその意味については、 '?strftime'を読んでください。 –