RでXTS時系列を再サンプリングする方法は?


9

不規則な間隔のXTS時系列がありPOSIXctます(インデックスタイプとして値を使用)。

10分間隔でサンプリングされた新しい時系列をどのように構築できますか。ただし、各サンプルモーメントはラウンド時間(13:00:00、13:10:00、13:20:00など)に合わせて調整されます。 。リサンプリングの瞬間が元のシリーズの値に正確に一致しない場合は、以前の値を使用します。


例を挙げていただけますか?
ジョシュアウルリッヒ

2
xtsへのFAQのリストがあった場合、これは非常にスコアが高くなります。ここを見て[r] xts、r-sig-financeアーカイブを検索して熟読してください。
Dirk Eddelbuettel、2010

回答:


5
library(xts)
?endpoints

例えば

tmp=zoo(rnorm(1000), as.POSIXct("2010-02-1")+(1:1000)*60)
tmp[endpoints(tmp, "minutes", 20)]

20分ごとにサブサンプリングします。また、チェックアウトする場合がありますto.minutesto.dailyなど、


小さな問題しかありません-私が...、14:59、15:00、...を持っている場合、希望どおりに15:00ではなく14:59を取得します。15:00に戻す方法はありますか?私はのようなものを試しました"seconds", 3601が、うまくいきません
Meh

タイムスタンプは不規則であるため、データポイント間のdtのみを保証できます。実際のポイントは、シリーズの開始ポイントによって異なります。開始点を1時間に固定すると、それはあなたのように動作します...(N分ごとにポイントがあると仮定)
Dr G

この私が望んでいない、まさにです-最初のポイントに依存している
MEH

2

あなたが何をしようとしているのかまだわかりませんし、例が役立つと思いますが、あなたが興味を持っているのではないかと思いましたalign.time

# Compare this:
tmp[endpoints(tmp, "minutes", 20)]
# with this:
align.time( tmp[endpoints(tmp, "minutes", 20)], n=60*20 )

時系列を考慮してください-外気温。11:00の壁時計、12:00の壁時計の温度を知りたい...後で例を確認して、これが機能するかどうかを確認します
Meh

私が知る限り、エンドポイントを使用した後のalign.timeのこのアプリケーションは、アダルが欲しかったものです(元の質問で「前のもの」を取ることについての彼の言及は別として)。とにかく、それは私が欲しかったものなので、ありがとう、ジョシュア。
Rahul Savani、2011

align.timeのバージョンはありますが、切り上げずに切り上げますか?それはまた、私が望んでいることとまったく同じです。(ところで、私には大雑把な方法があります:a1が私のXTSオブジェクトであり、分間隔に切り捨てたい場合index(a1)=index(a1)-60;align.time(a1,60)
Darren Cook

1
@DarrenCook:それを行うバージョンはありませんalign.time。とにかく、観測をその発生の時間合わせるのは悪い考えのようです。
ジョシュアウルリッヒ

2
@JoshuaUlrich 1つの例は、金融ティックをバーに変換することです。08:00は、08:00:00から08:00:59までの分を表します。時間バーとしての08:00は、08:00:00から08:59:59を表します。(それは、2011-11-25が2011-11-24ではなく2011-11-25での取引を表す、毎日のバーがどのように機能するかと一致します。)これは、OPが望んだ動作と同じだったと思います。
Darren Cook

1

aが2番目の解像度へのエントリを持つxtsオブジェクトである場合、これはすべての秒をノックオフします:index(a)= trunc(index(a)、 "mins")

これを使用して、「時間」の解像度に丸めることもできます。ただし、10分はサポートされていません。そのためには、これを行う必要があります:

x=as.POSIXlt(index(a))
x$sec[]=0;x$min[]=x$min[]%/%10
index(a)=x

またはa=align.time.down(a,600)、定義した場所:

align.time.down=function(x,n){index(x)=index(x)-n;align.time(x,n)}

(私自身のスクリプトでは、その最後の選択を行っています。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.