gpt4 book ai didi

r - 为日期范围和时间范围子集 xts 系列

转载 作者:行者123 更新时间:2023-12-01 13:42:13 25 4
gpt4 key购买 nike

是否可以一次性将日期和时间范围的 xts 系列子集化?例如,在下面的系列中,我只想为 6:30-6:50 和一个月的 01-04 选择行(或者更好的是,一个月的前 4 个数据日期,但这是一个不相关的问题)。

spy[,ohlcv]
open high low close volume
2016-05-19 06:30:00 204.030 204.300 203.900 204.100 537530
2016-05-19 06:35:00 204.100 204.340 204.010 204.240 482436
2016-05-19 06:40:00 204.250 204.540 204.240 204.530 441800
...
2016-05-20 06:30:00 204.960 205.250 204.860 205.170 564441
2016-05-20 06:35:00 205.170 205.410 205.170 205.250 593626
2016-05-20 06:40:00 205.260 205.440 205.240 205.350 342840
...

我看到了一些范围选择的答案herehere这非常有帮助,但没有显示在索引上设置多个并发约束 - 这将更具可读性。目前我正在通过普通方式管理它

(temp1 <- as.character(index(spy), format="%H:%M")) >= "06:30" & temp1 <= "06:50" -> set1
as.character(index(spy), format="%d") < "05" -> set2
then, spy[set1 & set2, ]

最佳答案

无法将这两种功能结合起来。您可以做的一件事是使用 split 将数据分成每月的 block ,然后使用 first 获取每个月的前 4 个观察值。然后您可以使用时间子集来获取特定的时间间隔。

require(xts)
times <- seq(as.POSIXct("2016-05-19 04:30:00"),
as.POSIXct("2016-05-20 07:40:00"), by="5 min")
set.seed(21)
x <- xts(rnorm(length(times)), times)
# get the first 4 days' observations for each month
y <- do.call(rbind, lapply(split(x, "months"), first, n="4 days"))
# subset by time interval
y["T06:30:00/T06:50:00"]

关于r - 为日期范围和时间范围子集 xts 系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39088002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com