2012-07-05 29 views
3

我有一个问题,xts中的endpoints()函数(以及使用端点的to.weekly函数)有时会在周末结束时返回星期五,有时会返回星期一。XTS to.weekly returns each different endpoints

我的数据集名为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" 

因此,您可以看到数据系列中没有缺失的工作日。

然而.....

> 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" 

当然这应该是周五(除了最后一点也就是今天,周四)?

我在做什么错在这里,是否有解决方法?

我希望计算从周五到周五这个数据系列的每周更改。

.......................................... 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" 
+1

你使用的是什么版本的xts? – 2012-07-05 15:07:57

+0

我刚升级到R2.15.1并运行update.packages()。显示“0.8-2”。 – 2012-07-05 15:13:06

+0

糟糕 - 我看到我们在0.8-6。 更新(年/月/日)? y 警告:包'xts','zoo'正在使用中,不会安装 这可能是问题所在。让我修复它.... – 2012-07-05 15:15:30

回答

2

这是在R-Forge上修复的CRAN版本中的一个错误。基本上,索引的时间部分没有被丢弃,你遇到了时区和夏时制时髦的业务。

Install from 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))))