运行 仅在日内时间段内进行分析 - 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()
只有当您的会话时区尚未设置为数据时区时,您才需要所有这些。
我需要 运行 从上午 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()
只有当您的会话时区尚未设置为数据时区时,您才需要所有这些。