使用R的xts中的端点

时间:2012-08-12 15:37:00

标签: r xts endpoints posixct

我试图找出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调用;我理解正确吗?如果有人能够解释所使用的方法,那将非常有用。

1 个答案:

答案 0 :(得分:3)

如上面的评论所述并直接从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)