使用“xts”包中的“to.weekly”函数导致错误的周末结束日期

2024-04-16

我有一个非常奇怪的问题......我正在使用to.weekly and to.period函数来转换每日xts反对每周数据。在大多数情况下,我将周末结束日期设为星期五 (day.of.week函数将返回 5) (例如"2010-01-08", "2011-02-11"),但在某些情况下我会得到周五以外的时间(周六/周日/周四/等)

我努力了to.weekly and to.period(x, period = 'weeks')并且都返回相同的问题。

为什么会发生这种情况?有解决方法吗?

Thanks!!

[编辑:下面的示例]

test.dates <- as.Date(c("2010-04-27","2010-04-28","2010-04-29","2010-04-30","2010-05-03","2010-05-04","2010-05-05","2010-05-06","2010-05-07","2010-05-10","2010-05-11","2010-05-12","2010-05-13","2010-05-14","2010-05-17","2010-05-18","2010-05-19","2010-05-20","2010-05-21","2010-05-22","2010-05-24","2010-05-25","2010-05-26","2010-05-27","2010-05-28","2010-06-01","2010-06-02","2010-06-03","2010-06-04"))

test.data <- rnorm(length(test.dates),mean=1,sd=2)

test.xts <- xts(x=test.data,order.by=test.dates)

#Function that takes in a vector of zoo/xts objects (e.g. "2010-01-08") and returns the day of the week for each
dayofweek <- function(x) {
 placeholder <- vector("list",length=length(x))
 names(placeholder) <- x

 for(i in 1:length(x)) {placeholder[[i]] <- month.day.year(x[i])}
 placeholder2 <- rep(NA,times=length(x))

 for(i in 1:length(x)) {placeholder2[i] <- day.of.week(placeholder[[i]][[1]],placeholder[[i]][[2]],placeholder[[i]][[3]])}
 return(placeholder2)}

这将返回非星期五的日期:time(to.weekly(test.xts))[dayofweek(time(to.weekly(test.xts))) != 5]


你的例子有两个问题:

  1. Your dayofweek函数有点麻烦,而且结果可能不正确。
  2. 您的示例日期缺少一些日期,例如 05-23-2010。

这是代码的清理版本:

library(xts)
test.dates <- as.Date(c("2010-04-27","2010-04-28","2010-04-29","2010-04-30","2010-05-03","2010-05-04","2010-05-05","2010-05-06","2010-05-07","2010-05-10","2010-05-11","2010-05-12","2010-05-13","2010-05-14","2010-05-17","2010-05-18","2010-05-19","2010-05-20","2010-05-21","2010-05-22","2010-05-24","2010-05-25","2010-05-26","2010-05-27","2010-05-28","2010-06-01","2010-06-02","2010-06-03","2010-06-04"))
test.data <- rnorm(length(test.dates),mean=1,sd=2)
test.xts <- xts(x=test.data,order.by=test.dates)
test.weekly <- to.weekly(test.xts)

library(lubridate)
test.weekly[wday(test.weekly, label = TRUE, abbr = TRUE) != "Fri"]

该函数的唯一结果是

           test.xts.Open test.xts.High test.xts.Low test.xts.Close
2010-05-22     -1.705749      1.273982    -2.084203      -1.502611

当然,问题是这周结束于05-23-2010,但该日期不存在于时间序列中。所以,to.weekly使用下一个最接近的日期作为终点,即05-22-2010。这就是你的问题的根源。

这是一个更好的例子,它表明没有问题to.weekly功能。

library(lubridate); library(xts)   
test.dates <- seq(as.Date("1900-01-01"),as.Date("2011-10-01"),by='days')
test.dates <- test.dates[wday(test.dates)!=1 & wday(test.dates)!=7] #Remove weekends
test.data <- rnorm(length(test.dates),mean=1,sd=2)
test.xts <- xts(x=test.data,order.by=test.dates)
test.weekly <- to.weekly(test.xts)
test.weekly[wday(test.weekly, label = TRUE, abbr = TRUE) != "Fri"]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用“xts”包中的“to.weekly”函数导致错误的周末结束日期 的相关文章

随机推荐

  • Lua - 尝试调用全局(零值)

    执行此代码时 出现错误 尝试调用全局 forId 零值 function execute args local itemid 526 local bone forId itemid this is where the error occur
  • 在一系列提交上运行过滤器分支

    git filter branch env filter export GIT AUTHOR EMAIL foo example com export GIT AUTHOR NAME foo commita commitb 结果是Which
  • 将锚点保存在ie6历史记录中

    我有一个带有锚点导航的网站 例如gmail 当锚点值更改时 页面的新内容会使用ajax加载 在 Firefox 中 当我更改锚点 使用 js 或页面 时 历史记录中会创建一个新项目并完美运行 但在 IE6 中 它不存储这个新项目 并且后退按
  • 如何检查日期时间段的交集[重复]

    这个问题在这里已经有答案了 我有四个 DateTime 对象 A1 A2 和 B1 B2 我需要知道 A1 A2 期间与 B1 B2 期间不相交 但我不想写脏代码 就像许多 if 块一样 if A1 lt B1 A2 gt B1 retur
  • 如何使用c++在运行时动态注册工厂类中的类

    现在 我实现了一个工厂类来动态创建带有标识字符串的类 请参见以下代码 void IOFactory registerIO Register NDAM9020 gt IOBase return new NDAM9020 Register BK
  • 如何更改 tkinter 树视图中选定单元格的前景色或背景色?

    我想更改 tkinter treeview 中选定单元格的前景色或背景色 我怎样才能做到这一点 This link https stackoverflow com a 18057449 5722359显示了更改树视图中所有单元格颜色的命令
  • 构建一个完整的在线支付网关,如 Paypal [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 所以这个问题不是关于将现有的支付网关集成到我的网站中 这更多的是一个架构问题 我想建立一个类似于Paypal 的系统 现在我知道 Pa
  • 如何使用 Firebase 函数向用户发送 FCM?

    Firebase 目前已推出Firebase 功能添加服务器端代码 Firebase 功能 https firebase google com docs functions 我想知道当数据库发生某些变化时是否可以通过这些函数调用 FCM 通
  • DB2 将 ISO 8601 时间戳字符串转换为 DB2 时间戳

    我有一个要求 我需要获取两个 ISO 8601 时间戳格式的字符串 并且必须比较它们并获取它们的最大时间戳 字符串采用以下格式 2014 06 11T16 45 45Z 为了进行比较 我需要将它们转换为 DB2 时间戳 然后进行比较 问题出
  • 获取 Roslyn 中类之间的依赖关系

    我使用 Roslyn 成功获取了项目之间的依赖关系 现在我想获取类之间的依赖关系 类似于 Visual Studio Enterprise 中的代码映射功能 这是我的代码 部分是我想象我能得到一些东西的地方 不过 我对 Roslyn API
  • VBA用于在文本溢出时缩小PowerPoint中的字体

    我正在尝试为 PowerPoint 文件找到一个宏 该文件是通过 CAT 工具进行语言转换后导出的 在某些语言对中 由于语言长度的差异 翻译的内容将无法放入源文件文本框中 因此 翻译和导出的 PowerPoint 文件包含多个形状 文本框
  • 检测是否安装了 SQL Server Compact Edition 3.5 SP2 x64?

    我正在构建一个安装程序 并且想要引导 SQL Server Compact Edition 3 5 SP2 问题是我正在寻找注册表项HKLM SOFTWARE Microsoft Microsoft SQL Server Compact E
  • 如何向文本框添加按钮?

    我正在尝试制作一个右侧带有按钮的文本框 我的代码 public partial class TextBoxButton TextBox Category Button Description Button in textbox public
  • SQL Server 中的 DECODE() 函数

    SELECT PC COMP CODE R PC RESUB REF DECODE PC SL LDGR CODE 02 DR CR PC DEPT NO DEPT PC DEPT NO PC SL LDGR CODE PC SL ACNO
  • Jquery mobile 中的选择选项出现问题

    我有一个表格 其中包含输入文本以及选择选项和按钮 单击按钮时将克隆表格行 除了选择选项之外 一切都工作正常 克隆表行后 选择选项不会显示我选择的内容 这是 JsFiddlehttp jsfiddle net aravinth Ad22d h
  • Android 中相机捕获图像的图像叠加

    我需要用相机拍照 同时在相机视图顶部显示叠加图像 拍照后 我需要保存用户在拍照时看到的内容 有人可以建议我吗 请 public void onPictureTaken byte data Camera camera Bitmap camer
  • 检查orientdb中是否存在类

    如何检查东方数据库中是否存在类 如果它不存在于数据库中 我需要创建它并插入一条记录 如果存在 我需要插入该记录 我需要使用 JAVA 做同样的事情 您可以使用以下语句通过 SQL 检索架构信息 select expand classes f
  • 如何读取 Windows 特定扩展名

    在 OpenGL superible 中 示例说我可以通过以下方式读取 Windows 特定扩展 Type defined in the book as char but that is not what glGetString retur
  • C# 在发布模式下运行时,调试语句会被编译出来吗?

    使用说似乎是理想的 就可读性而言 Debug WriteLine写入输出而不是大量 if DEBUG声明 当程序在发布模式下编译时 所有开销都用Debug WriteLine消失就好像它不存在一样 或者该函数仍然被调用 但内部没有执行任何操
  • 使用“xts”包中的“to.weekly”函数导致错误的周末结束日期

    我有一个非常奇怪的问题 我正在使用to weekly and to period函数来转换每日xts反对每周数据 在大多数情况下 我将周末结束日期设为星期五 day of week函数将返回 5 例如 2010 01 08 2011 02