2011-12-07 80 views
1

我在R中有兩個xts時間序列,並且想要計算彼此最接近的時間的時間序列值之間的差異。也就是說,如果我的兩個指標是:計算值在不同時間的兩個xts時間序列的差異

[1] (10/10/05 13:00:00) (10/10/05 14:00:00) (10/10/05 14:23:00) 

[1] (10/10/05 12:38:00) (10/10/05 12:53:00) (10/10/05 12:59:00) (10/10/05 13:08:00) (10/10/05 13:23:00) 
[6] (10/10/05 13:38:00) (10/10/05 13:53:00) (10/10/05 14:23:00) (10/10/05 15:05:00) (10/10/05 15:11:00) 

我要計算的值中的差異:

  • 13:00和12:59
  • 14:00和13:53
  • 14:30和14:23

我該怎麼做?從zooall=FALSE的標準merge方法將不會做我想要的,因爲索引必須完全相等才能正確合併。

任何想法?

回答

1

你沒有提供一個可重複的例子,所以我不能給你一個具體的解決方案。通常,您可以使用align.time將每個對象的索引值更改爲相似的週期性,或者可以合併並使用na.locf填充缺失的值。然後你可以在兩個系列之間做任何你想要的操作。

+0

感謝您的回覆。我嘗試過使用'align.time',但似乎需要幾秒鐘來對齊(例如,「60 * 60」以對齊每小時),而我想與另一個陣列中的時間對齊。 'na.locf'似乎很有用 - 但它只會傳遞最後的觀察結果,而我想要最接近的觀察結果(例如,如果我在13:00需要值,最後一次觀察是在12:30,下一次觀察是在13:01我想要13:01的值)。有沒有辦法做到這一點? – robintw

+0

我不得不考慮這個......我似乎記得某人提出了一個非常類似的問題,但我不記得它是在SO還是在R-SIG-Finance。一個小的示例數據集和您想要的輸出將會非常有幫助。 –

0

我在想這樣的事情:對於第一個系列的每個成員,根據他們的時間索引插入到第二個系列中,然後計算插入的第一個系列成員的索引與先前和後續的第二系列成員,取指標之間的絕對差值最小的值之間的對應差值。