XTS to.weekly 返回不同的每周端点 [英] XTS to.weekly returns different weekly endpoints

查看:35
本文介绍了XTS to.weekly 返回不同的每周端点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个问题,其中 xts 中的 endpoints() 函数(以及使用端点的 to.weekly 函数)有时返回星期五作为周末,有时返回星期一.

I have a problem where the endpoints() function in xts (and also the to.weekly function, which uses endpoints) sometimes returns Friday as the end of week, and sometimes returns Monday.

我的数据集名为 sp2.

> head(sp2)
           [,1]
2012-01-09 1.78
2012-01-10 1.78
2012-01-11 1.77
2012-01-12 1.80
2012-01-13 1.77
2012-01-16 1.77

> tail(sp2)
           [,1]
2012-06-28 1.94
2012-06-29 1.92
2012-07-02 1.92
2012-07-03 1.90
2012-07-04 1.89
2012-07-05 1.89

> class(sp2)
[1] "xts" "zoo"

> weekdays(index(sp2))
  [1] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"   
 [11] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"   
 [21] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"   
 [31] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"   
 [41] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"   
 [51] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"   
 [61] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"   
 [71] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"   
 [81] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"   
 [91] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"   
[101] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"   
[111] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"   
[121] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Monday"    "Tuesday"   "Wednesday" "Thursday" 

如您所见,数据系列中没有缺少工作日.

So as you can see there are no missing weekdays in the data series.

然而.....

> weekdays(index(to.weekly(sp2)))
 [1] "Friday"   "Friday"   "Friday"   "Friday"   "Friday"   "Friday"   "Friday"   "Friday"   "Friday"   "Friday"   "Monday"  
[12] "Monday"   "Monday"   "Monday"   "Monday"   "Monday"   "Monday"   "Monday"   "Monday"   "Monday"   "Monday"   "Monday"  
[23] "Monday"   "Monday"   "Monday"   "Thursday"

当然这应该总是星期五(除了最后一点是今天,星期四)?

Surely this should always be Friday (except for the last point which is today, Thursday)?

我在这里做错了什么,有解决方法吗?

What am I doing wrong here, and is there a workaround?

我希望计算这个数据系列从周五到周五的每周变化.

I wish to compute weekly changes on this data series from Friday to Friday.

......................................................可重现的例子...........................

..........................................REPRODUCIBLE EXAMPLE ........................

i <- as.Date((as.numeric(Sys.Date())-200):as.numeric(Sys.Date()))
x <- xts(rep(1, length(i)), order.by = i)
weekdays(index(to.weekly(x)))
#  [1] "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"  
# [14] "Sunday"   "Monday"   "Monday"   "Monday"   "Monday"   "Monday"   "Monday"   "Monday"   "Monday"   "Monday"   "Monday"   "Monday"   "Monday"  
# [27] "Monday"   "Monday"   "Monday"   "Thursday"
y <- xts(rep(1, length(i)), order.by = as.POSIXct(i))
weekdays(index(to.weekly(y)))
# [1] "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"  
# [14] "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"   "Sunday"  
# [27] "Sunday"   "Sunday"   "Sunday"   "Thursday"

推荐答案

这是 R-Forge 上已修复的 CRAN 版本中的错误.基本上,索引的时间部分并没有被删除,而且您遇到了一些带有时区和夏令时的时髦业务.

This is a bug in the CRAN version that has been fixed on R-Forge. Basically, the time component of the index wasn't being dropped and you ran into some funky business with timezones and daylight saving time.

从 R-Forge 安装以使用更正后的功能.

require(xts)
i <- Sys.Date()+200:0
x <- xts(rep(1, length(i)), order.by = i)
y <- xts(rep(1, length(i)), order.by = as.POSIXct(i))
all.equal(weekdays(index(to.weekly(x))), weekdays(index(to.weekly(y))))

这篇关于XTS to.weekly 返回不同的每周端点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆