我试图弄清楚 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/