- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
先生。 Ulrichs xts 包总是惊人的。我一直使用普通的 5 分钟、15 分钟、30 分钟拆分。从来没有问题。
现在我卡住了。
#Setup test data
my.time <- seq(from = as.POSIXct('2000-01-01 00:00:00'),
to = as.POSIXct('2000-01-01 1:00:00'),
by = '1 sec')
my.data <- rep(10, length = length(my.time))
my.xts <- as.xts(my.data, order.by = my.time)
#Now splitting and checking endtimes of first split
tail((split(my.xts, f="minutes", k=20))[[1]])
tail((split(my.xts, f="minutes", k=30))[[1]])
#2000-01-01 00:19:59 10 #All good
#2000-01-01 00:29:59 10 #All good
tail((split(my.xts, f="minutes", k=22))[[1]])
#2000-01-01 00:11:59 10 #Hmmm, what am I missing. Expectimg 00:21:59
#As endpoints is used by split I also checked this behaviour
endpoints(my.xts, on="minutes", k=20)
#[1] 0 1200 2400 3600 3601 #All good
endpoints(my.xts, on="minutes", k=30)
#[1] 0 1800 3600 3601 #All good
endpoints(my.xts, on="minutes", k=22)
#[1] 0 720 2040 3360 3601 #Hmmm
为了理解这一点,我在 https://github.com/joshuaulrich/xts/blob/master/src/endpoints.c 进一步研究了 XTS 代码
在那里我发现这个应该更有效
c(0,which(diff(_x%/%on%/%k+1) != 0),NROW(_x))
所以我试了一下
which(diff(.index(my.xts) %/% 60 %/% 20 +1) != 0)
#[1] 1200 2400 3600 #As expected
which(diff(.index(my.xts) %/% 60 %/% 21 +1) != 0)
#[1] 1080 2340 3600 #Expecting 1260 2520...
which(diff(.index(my.xts) %/% 60 %/% 22 +1) != 0)
#[1] 720 2040 3360 #Expecting 1320 2640...
which(diff(.index(my.xts) %/% 60 %/% 23 +1) != 0)
#[1] 720 2100 3480 #Expecting 1380 2760...
which(diff(.index(my.xts) %/% 60 %/% 24 +1) != 0)
#[1] 1440 2880 #As expected
which(diff(.index(my.xts) %/% 60 %/% 30 +1) != 0)
#[1] 1800 3600 #As expected
这是我的大脑过热的地方,我在这里发布。我确定我只是遗漏了一些东西,所以我没有将其作为错误发布在 Github 上。请帮助解释发生了什么。为什么我没有得到预期的结果?
编辑:所以,快速思考一下,我猜这与所有基于 Unix 时间开始的函数和使用不能被一小时整除的时基有关。按照我的理解,这是正确的引导吗?
编辑2:在最终了解端点和拆分应该如何工作后,在下面发布我的答案...
最佳答案
当然,split
(和endpoints
)的工作方式与它们在 xts 中的预期一样。 IE。在决定间隔时以 1970-01-01 00:00:00 作为起点进行分割。是的,我误将 split 用作在我的时间序列 xts 数据中的一个小时的任意起点处进行拆分的一种简单方法。
无论如何,我通过编写这个将第一个时间戳“重置”为 1970-01-01 00:00:00 的简短函数解决了我的小问题。
## contuation from code snippet above
#So, I realised it was all about resetting the first time
#to 1970-01-01 00:00:0,
#so that I could do easily my "strange" splitting.
#Please note that this is not to be used for dates,
#only when working on hour, mins or secs
#and don't care that you break the index.
startMovedSplit <- function(x, ...) {
startIndex <- head(.index(x), n=1)
.index(x) <- .index(x) - startIndex
split(x, ...)
}
#New Try
tail((startMovedSplit(my.xts, f="minutes", k=20))[[1]])
tail((startMovedSplit(my.xts, f="minutes", k=30))[[1]])
#1970-01-01 00:19:59 10 #Good enough for my purposes
#1970-01-01 00:29:59 10 #Good enough for my purposes
tail((startMovedSplit(my.xts, f="minutes", k=22))[[1]])
#1970-01-01 00:21:59 10 #Good enough for my purposes
我对 xts 库的所有误解中最好的部分是什么?我现在知道如何处理函数内的省略号 (...)
和子函数的调用!
关于r - XTS split 的艰难时期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51908138/
想要匹配单词i.v.大小写不敏感 有图案 (?i)\bi\.v\. 但希望末尾有一个单词边界 上面的模式失败了,因为它匹配 静脉注入(inject) 但是如果我尝试在末尾添加工作边界 (?i)\bi\
当 Eclipse Package Explorer 中的文件夹(链接到文件系统中某处的目录)包含名称以 . (句号),这些文件不会出现。 Eclipse 可以配置为显示这些文件吗?如果可以,如何配置
当 Eclipse Package Explorer 中的文件夹(链接到文件系统中某处的目录)包含名称以 . (句号),这些文件不会出现。 Eclipse 可以配置为显示这些文件吗?如果可以,如何配置
在P1881提案中,提出了 C++ 代码的历元(在模块级别)的概念。这样的功能可以允许在模块级别自定义 C++ 语法和 C++ 行为,而不必破坏向后兼容性。 More elaborate motiva
我是 git 的新手,我有一个关于在 git 中添加文件的问题。我发现了多个关于 git add . 和 git add -a、git add --all、git 之间区别的 stackoverflo
我是一名优秀的程序员,十分优秀!