R与xts子集:每天设置两个时间范围

时间:2014-06-26 14:25:32

标签: r xts

如何获取每天两个时间范围的数据?

数据:

sample.time = timeDate('2014-01-01 00:00:00')+1*60*(1:3000) 
data = 1:3000
my_xts = xts(data,order.by=sample.time) 

我们可以通过以下方式严格获取1:00 AM01:02 AM之间的数据:

my_xts["T01:00/T01:02"]

结果:

2014-01-01 01:00:00   60
2014-01-01 01:01:00   61
2014-01-01 01:02:00   62
2014-01-02 01:00:00 1500
2014-01-02 01:01:00 1501
2014-01-02 01:02:00 1502
2014-01-03 01:00:00 2940
2014-01-03 01:01:00 2941
2014-01-03 01:02:00 2942

但是每天01:00/01:0202:00/02:00的范围之间的数据呢?最终应该是:

2014-01-01 01:00:00   60
2014-01-01 01:01:00   61
2014-01-01 01:02:00   62
2014-01-01 02:00:00  120
2014-01-02 01:00:00 1500
2014-01-02 01:01:00 1501
2014-01-02 01:02:00 1502
2014-01-02 02:00:00 1560
2014-01-03 01:00:00 2940
2014-01-03 01:01:00 2941
2014-01-03 01:02:00 2942
2014-01-03 02:00:00 3000

1 个答案:

答案 0 :(得分:1)

不确定这是否是最快或最方便的方法,但它有效:

c(my_xts["T01:00/T01:02"], my_xts["T02:00/T02:00:01"])
                    [,1]
2014-01-01 01:00:00   60
2014-01-01 01:01:00   61
2014-01-01 01:02:00   62
2014-01-01 02:00:00  120
2014-01-02 01:00:00 1500
2014-01-02 01:01:00 1501
2014-01-02 01:02:00 1502
2014-01-02 02:00:00 1560
2014-01-03 01:00:00 2940
2014-01-03 01:01:00 2941
2014-01-03 01:02:00 2942
2014-01-03 02:00:00 3000