R:如何对一个 zoo 对象进行子集选择?

4

给定一个日期,我可以访问动物园向量中的相应元素。例如:

z[as.POSIXct(1213708500, origin="1970-01-01")]

这将返回

2008-06-17 14:15:00 
           -8.28123 

我想获得一个由30个连续元素组成的向量(以上面的元素结束)。
如果不知道起始元素的时间戳,我该如何有效地实现这一点?
我知道可以使用window函数来实现,但它需要起始时间和结束时间。

你是否正在尝试进行滚动计算?如果是这种情况,请参阅?rollapply - G. Grothendieck
1个回答

5

使用类似以下代码:

ind <- which(index(z)==as.POSIXct(1213708500, origin="1970-01-01")) + seq(-29,0)

接着是

z[ind]

使用which()函数可以得到匹配的索引,然后您可以通过常规索引选择连续的30个元素。


非常感谢!请问,如果我有一个时间戳向量(而不是单个时间戳1213708500),我该如何返回一个矩阵到“ind”中? - Mike Furlender
1
嗯,那可能只是普通的向量值索引问题。尝试查看help(match) / help("%in%")。此外,我非常喜欢xts包,因为它的索引方式可以像这样说:x["2010-01::2010-06"]获取六个月,小时/分钟/秒等也是如此。最终,这更好,因为在我们讨论的内容中,您确实依赖于某个相等性为真。话虽如此,我想min(which(... >= ...))也可以工作。 - Dirk Eddelbuettel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接