R xts:不同日期的相同日内时间范围子集

R xts:不同日期的相同日内时间范围子集,r,subset,xts,R,Subset,Xts,我想通过只选择文件中所有不同日期的09:00:00.000到17:00:00.000范围内的数据来子集xts对象(数据) Timestamp Col1 Col2 Col3 Col4 2017-05-02 08:50:47.457 12345 12345 12345 12345 2017-05-02 09:50:49.845 12345 12345 12345 12345 2017-05-02 16:50:49.845 12345 12345 12345 1

我想通过只选择文件中所有不同日期的
09:00:00.000到17:00:00.000范围内的数据来子集xts对象(数据)

Timestamp                Col1  Col2  Col3  Col4 
2017-05-02 08:50:47.457 12345 12345 12345 12345 
2017-05-02 09:50:49.845 12345 12345 12345 12345
2017-05-02 16:50:49.845 12345 12345 12345 12345
2017-05-02 22:50:50.085 12345 12345 12345 12345
2017-05-03 08:50:47.457 12345 12345 12345 12345 
2017-05-04 09:50:49.845 12345 12345 12345 12345
2017-05-04 16:50:49.845 12345 12345 12345 12345
2017-05-04 22:50:50.085 12345 12345 12345 12345

我该怎么做

因为您要求的是xts解决方案,所以非常简单。只需使用括号进行子集

t<-read.table("test.csv", sep=";", header = T)
library(xts)
t2<-xts(t[,2:5], order.by = as.POSIXct(t$Timestamp, tz="UTC","%Y-%m-%d %H:%M:%S"))
t2["T09:00/T17:00"]

搜索现有答案时,会发现大量重复的答案。我想问的是如何在所有日期中对时间范围进行子集,而不是在
xts_obj[“2017-05-02 09:00:00.000::2017-05-02 17:00:00.000”]
的正常情况下,因为我知道如何指定特定日期的范围。我说的是跨越不同日期。提取时间字段,然后对其进行过滤。就像我告诉你的,它还是一个复制品。您可以将复合比较与逻辑索引
[time>=tmin&time>一起使用
 t2[.indexhour(t2) %in% seq(9,17)]