我可以使用两个以“/”分隔的时间字符串查询xts时间范围:
library(xts)
set.seed(1234)
a = xts(1:10, as.POSIXlt(1366039619, tz="", origin="1970-01-01") + rnorm(10, 0, 3))
[,1]
2013-04-15 11:26:51.962906 4
2013-04-15 11:26:55.378802 1
2013-04-15 11:26:56.329886 10
2013-04-15 11:26:57.275780 7
2013-04-15 11:26:57.306643 9
2013-04-15 11:26:57.360104 8
2013-04-15 11:26:59.832287 2
2013-04-15 11:27:00.287374 5
2013-04-15 11:27:00.518167 6
2013-04-15 11:27:02.253323 3
> a['2013-04-15 11:26:57/2013-04-15 11:26:58']
[,1]
2013-04-15 11:26:57.275780 7
2013-04-15 11:26:57.306643 9
2013-04-15 11:26:57.360104 8
如何使用POSIXlt对象索引(a [4])和索引(a [7])在不同的 xts对象上运行相同的范围查询?我是否必须将索引转换为字符串,或者使用整数值有更快的方法,例如自POSIXlt中嵌入的纪元以来的秒数?
答案 0 :(得分:0)
按范围的ISO样式字符子集(即包含:或/的长度为1的向量)非常快。所以你应该使用这样的东西:
a[paste(index(a)[4],index(a)[7],sep='::')]
[,1]
2013-04-15 17:26:57 7
2013-04-15 17:26:57 9
2013-04-15 17:26:57 8
2013-04-15 17:26:59 2
答案 1 :(得分:0)
a [1:10]将提取前10行,你甚至不必告诉它你想要哪些列 a [30:32]会给你30行到第32行。