データ ポイントが欠落している 1 分間の日中価格データがあります。そういうものを埋めていきたい。
次の投稿の提案を読み、同様の手順を試しました: R: 時系列に欠落している日付を埋める?
私の場合、不足しているデータ ポイントは最初の取引、つまり 09:31:00 です。
> head(s)
AMR.Open AMR.High AMR.Low AMR.Close AMR.Volume AMR.WAP AMR.hasGaps AMR.Count
2010-09-10 09:32:00 6.08 6.10 6.07 6.10 298 6.087 0 39
2010-09-10 09:33:00 6.10 6.14 6.10 6.14 274 6.122 0 70
2010-09-10 09:34:00 6.14 6.15 6.13 6.13 472 6.133 0 96
2010-09-10 09:35:00 6.13 6.14 6.13 6.13 291 6.133 0 68
2010-09-10 09:36:00 6.13 6.13 6.11 6.11 548 6.123 0 97
2010-09-10 09:37:00 6.11 6.11 6.11 6.11 67 6.110 0 26
> na.locf(s, xout=seq(as.POSIXct(head(index(s), 1) - 60), as.POSIXct(tail(index(s), 1)), by="1 min")) -> ss
> head(ss)
AMR.Open AMR.High AMR.Low AMR.Close AMR.Volume AMR.WAP AMR.hasGaps AMR.Count
2010-09-10 09:32:00 6.08 6.10 6.07 6.10 298 6.087 0 39
2010-09-10 09:33:00 6.10 6.14 6.10 6.14 274 6.122 0 70
2010-09-10 09:34:00 6.14 6.15 6.13 6.13 472 6.133 0 96
2010-09-10 09:35:00 6.13 6.14 6.13 6.13 291 6.133 0 68
2010-09-10 09:36:00 6.13 6.13 6.11 6.11 548 6.123 0 97
2010-09-10 09:37:00 6.11 6.11 6.11 6.11 67 6.110 0 26
上記のように、返されたオブジェクトは期待どおりに満たされていません。
以下で、開始時刻と終了時刻を正しく指定したことがわかります。
> as.POSIXct(head(index(s), 1) - 60)
[1] "2010-09-10 09:31:00 EDT"
> as.POSIXct(tail(index(s), 1))
[1] "2010-09-10 16:00:00 EDT"
>
これは、日付範囲にタイムゾーンが指定されているのに対し、元の POSIX インデックスには指定されていないためでしょうか? tz="" を指定して tz を削除しようとしましたが、削除されません。そうは言っても、タイムゾーンは単なるニシンかもしれません。
誰かがテストに興味がある場合は、データを rda (バイナリ) 形式で保存しました。
http://www.speedyshare.com/files/28576853/test.rda
助けに感謝します。