运行 仅在日内时间段内进行分析 - zoo

Run analysis only on a intraday time period - zoo

我需要 运行 从上午 10 点到下午 4 点进行分析。 原始数据 运行s 从早上 9 点到下午 5 点,每天 1 年。 如何仅包括指定的分析时间段?

window 在动物园里也无济于事。

结构(c(0, 7.12149266486255e-05, 0.000142429853297251, 0.000213644779945877, 0.000284859706594502, 0.000356074633243128, 0.000427289559891753, 0.000498504486540379, 0.000569719413189004, 0.00064093433983763, 0.000712149266486256, 0.000783364193134881, 0.000854579119783507, 0.000925794046432132, 0.000997008973080758, 0.00106822389972938, 0.00113943882637801, 0.00121065375302663, 0.00128186867967526, 0.00135308360632389, 0.00142429853297251, 0.00149551345962114, 0.00156672838626976, 0.00163794331291839, 0.00170915823956701, 0.00178037316621564, 0.00185158809286426, 0.00192280301951289, 0.00199401794616152, 0.00206523287281014), index = structure(c(1009942620, 1009942680, 1009942740, 1009942800, 1009942860, 1009942920, 1009942980, 1009943040, 1009943100, 1009943160, 1009943220, 1009943280, 1009943340, 1009943400, 1009943460, 1009943520, 1009943580, 1009943640, 1009943700, 1009943760, 1009943820, 1009943880, 1009943940, 1009944000, 1009944060, 1009944120, 1009944180, 1009944240, 1009944300, 1009944360), class = c("POSIXct", "POSIXt")), class = "动物园")

如何 select 时间 > 上午 10 点和时间 < 下午 4 点,跨越几天。

您可以使用时间、价值和小时信息构建用于分析的标题。然后,您可以 filter 仅在上午 10 点到下午 4 点之间的行。

library(dplyr)
library(zoo)

tibble(time = index(df), 
       value = coredata(df), 
       hour = lubridate::hour(time)) %>%
  filter(between(hour, 10, 15)) -> result

result

如果 z 是动物园对象那么

1) 使用它来提取每个时间点的小时,然后仅子集为 10、11、12、13、14 或 15。

z[format(time(z), "%H") %in% 10:15]

2) 或使用类似但使用 POSIXlt 获取小时的替代方法:

z[as.POSIXlt(time(z))$hour %in% 10:15]

3) 或将系列转换为 xts 并使用:

x <- as.xts(z)["T10:00/T15:00"]
drop(as.zoo(x))

如果可以return一个xts系列就省略第二行。

时区

请确保您正确设置了时区,因为一个时区的时间与另一个时区的时间不同。

我们可以这样查询会话的当前时区:

Sys.timezone()

也可以这样设置:

Sys.setenv(TZ = "...")

其中 ... 替换为所需的时区。常用设置为:

Sys.setenv(TZ = "GMT")
Sys.setenv(TZ = "") # restore default

以下将显示可以使用的可能时区:

OlsonNames()

只有当您的会话时区尚未设置为数据时区时,您才需要所有这些。