2

我在 R 中有一个 xts 时间序列,并且正在使用非常方便的函数来基于字符串对时间序列进行子集化,例如

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

这会将最近的观察返回到该日期/时间 - 这在许多情况下非常方便。但是,在这种特殊情况下,我只想返回该时间序列的元素。有没有办法在 xts 中使用这样一个不错的日期/时间字符串来做到这一点?

在更一般的情况下(我现在没有立即遇到这个问题,但怀疑我可能很快就会遇到它) - 是否有可能在一段时间内提取最接近的观察结果?例如,最接近给定日期/时间的观察,假设它在给定日期/时间的 10 分钟内 - 否则只需丢弃该观察。

我怀疑这种更一般的情况可能需要我编写一个函数来执行此操作——我很乐意这样做——我只是想检查 xts 中是否已经满足了更具体的情况(或一般情况)。

4

1 回答 1

2

AFAIK,这样做的唯一方法是使用从您感兴趣的时间开始的子集,然后得到第一个观察结果。

例如

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))

这是 Jeff(xts 作者)考虑添加您想要的功能的线程 http://r.789695.n4.nabble.com/Find-first-trade-of-day-in-xts-object-td3598441.html# a3599887

于 2012-05-15T12:29:55.977 回答