2012-05-15 31 views
2

我有一個XTS R中的時間序列和現在用的是非常方便的功能子集基於字符串的時間序列,例如指數XTS

time_series["17/06/2006 12:00:00"] 

這將返回最近的觀測值到該日期/時間 - 這在許多情況下非常方便。但是,在這種特殊情況下,我只想返回當時時間序列中的元素。有沒有辦法在xts中使用這樣的好日期/時間字符串來做到這一點?

在更一般的情況下(我沒有這個問題現在馬上,而是懷疑我可能很快就會成爲它) - 是有可能的一段時間內提取最接近的觀察?例如,對給定日期/時間的最接近觀察,假設它在給定日期/時間的10分鐘內 - 否則就是放棄該觀察。

我懷疑這個更一般的情況可能會要求我寫一個函數來做到這一點 - 我很樂意這樣做 - 我只是想檢查更具體的情況(或一般情況)是否已經在xts中照顧。

+0

是否示例代碼你提供工作的?我覺得應該是'time_series [「2006-06-17 12:00:00」]' – GSee

+0

你的榜樣將無法正常因爲'「17/06/2006」'是不是一個有效的ISO日期時間表示工作。 –

+0

time_series [ 「2006-06-17 12:00:00」]將返回12之間發生的所有的值:00:00.000000和12:00:00.999999。這不同於「對該日期/時間的最近觀察」 – GSee

回答

2

據我所知,要做到這一點的唯一方法是使用開始於你感興趣的時候的一個子集,然後得到的第一觀察。

例如

first(time_series["2006-06-17 12:00:00/2006-06-17 12:01"]) 

,或者更一般地說,每天起牀了12:00的價格,你可以子集下來到1分鐘的每一天,然後分裂由天,提取每個先觀察。

do.call(rbind, lapply(split(time_series["T12:00:00/T12:01"],'days'), first)) 

這裏有一個線程在傑夫(在XTS作者)考慮加入的功能,你想 http://r.789695.n4.nabble.com/Find-first-trade-of-day-in-xts-object-td3598441.html#a3599887