【问题标题】:xts: subset same intraday time range across different dates [duplicate]xts:跨不同日期的子集相同的日内时间范围[重复]
【发布时间】:2017-11-12 04:22:21
【问题描述】:

我将通过仅选择文件中所有不同日期的09:00:00.000 to 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

我该怎么做?

【问题讨论】:

  • 搜索现有答案,现有大量重复项。
  • 我在问如何将所有日期的时间范围划分为子集,而不是正常情况 wherexts_obj["2017-05-02 09:00:00.000::2017-05-02 17:00:00.000"],因为我确实知道如何为特定日期指定范围。我说的是不同的日期。
  • 提取时间字段,然后对其进行过滤。它仍然是重复的,就像我告诉你的那样。您可以使用与逻辑索引[time>= tmin & time <= tmax] 或 data.table 或 dplyr 的between() 的复合比较。有大量现有的重复项。请找到最好的,然后将这个问题复制到其中。

标签: r subset xts


【解决方案1】:

由于您要求的是 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"]

使用 nice 内置索引函数的替代版本(这可用于更复杂的操作):

 t2[.indexhour(t2) %in% seq(9,17)]

【讨论】:

    猜你喜欢
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 2019-02-28
    • 1970-01-01
    相关资源
    最近更新 更多