【问题标题】:XTS to.weekly returns different weekly endpointsXTS to.weekly 返回不同的每周端点
【发布时间】:2012-07-05 15:01:29
【问题描述】:

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

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

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

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

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

.................................. 可重复的示例 ... .....................

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"

【问题讨论】:

  • 你用的是什么版本的xts?
  • 我刚刚升级到 R2.15.1 并运行了 update.packages()。显示“0.8-2”。
  • 糟糕 - 我知道我们现在是 0.8-6。更新(y/N/c)? y 警告:软件包‘xts’、‘zoo’正在使用中,不会被安装这可能是问题所在。让我解决它....
  • 如果更新后问题依然存在,能否举个例子reproducible
  • 我找到了解决方案。我的日期索引数据(来自彭博社)是“日期”格式。将其更改为 POSIXct 即可解决问题。

标签: r xts zoo


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 2017-11-03
    相关资源
    最近更新 更多