我试图弄清楚 endpoints 如何选择我的数据只是弱规则的时间:也就是说,缺少一些观察结果。我有 1 分钟的返回,缺少一些分钟,我正在尝试转换为 5 分钟的间隔。 endpoints 将如何决定保留哪些时间?我使用的电话是:

endpoints(ret_1_min_xts, k=5, "minutes")

我的系列看起来像这样,例如:
1986-02-04 09:32:00 1
1986-02-04 09:33:00 2
1986-02-04 09:34:00 3
1986-02-04 09:35:00 4
1986-02-04 09:36:00 5
1986-02-04 09:37:00 6
1986-02-04 09:38:00 7
1986-02-04 09:39:00 8
1986-02-04 09:40:00 9
1986-02-04 09:41:00 10
1986-02-04 09:42:00 11
1986-02-04 09:45:00 12
...

调用 endpoints 返回:
1986-02-04 09:34:00
1986-02-04 09:39:00
1986-02-04 09:42:00
1986-02-04 09:49:00
1986-02-04 09:54:00
...

我正在尝试查看 endpoints 的源代码,但该函数似乎是用 C 编写的,并且是通过 .Call 调用的;我理解正确吗?如果有人可以解释所使用的方法,那将非常有帮助。

最佳答案

正如上面评论中所回答的那样,直接取自 endpoints.c 源代码,该函数返回:

c(0,which(diff(_x%/%on%/%k+1) != 0),NROW(_x))

哪里 _x = .index(my_xts)
这实际上是做什么的?关于我对 endpoints 函数的调用:
diff 中的内容首先删除秒,然后将内容移动到 k 分钟增量中(所有这些都使用整数除法)。 diff 然后简单地记录您更改为下一个增量的点,which 返回发生增量的那些点。实际上,这只是返回每 5 分钟间隔中的最后一个点(在我的通话中 k=5)

关于r - 使用 R 的 xts 中的端点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11923420/

10-12 20:20