首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >同时为日期范围和时间范围设置xts序列的子集

同时为日期范围和时间范围设置xts序列的子集
EN

Stack Overflow用户
提问于 2016-08-23 04:16:35
回答 2查看 634关注 0票数 3

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

代码语言:javascript
运行
复制
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的一些答案,它们非常有帮助,但没有显示在索引上设置多个并发约束-这将更具可读性。目前我正在通过手工操作来管理这件事。

代码语言:javascript
运行
复制
(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, ]
EN

回答 2

Stack Overflow用户

发布于 2016-08-23 09:20:16

没有办法将这两种功能结合起来。您可以做的一件事是使用split将数据分解为每月的数据块,然后使用first获取每个月的前4个观测值。然后,您可以使用time-of-day子设置来获取特定的时间间隔。

代码语言:javascript
运行
复制
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"]
票数 2
EN

Stack Overflow用户

发布于 2016-08-23 20:42:42

根据我之前的评论,你可以尝试这样的东西:

代码语言:javascript
运行
复制
spy[.indexmday(spy) %in% c(0,1,2,3) & .indexhour(spy) == 6 & .indexmin(spy) %in% (30:50)]

基本上,我们只是将其设置为我们想要的月/小时/分钟。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39088002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档