如何以累积的方式将xts转换为较低频率

2024-01-10

我正在尝试以累积方式将 xts 时间序列数据转换为较低的周期性。

例如,对 xts 包中的示例数据(sample_matrix)使用 to.weekly 我得到:

library(xts)
data(sample_matrix)
to.weekly(as.xts(sample_matrix), name="")

> to.weekly(as.xts(sample_matrix), name="")
              .Open    .High     .Low   .Close
2007-01-08 50.03978 50.42188 49.95041 49.98806
2007-01-15 49.99489 50.68583 49.80454 50.48912
.....

我希望能够使用稍微不同的函数 to.weekly.cumulative 来返回:

> to.weekly.cumulative(as.xts(sample_matrix), name="")
              .Open    .High     .Low   .Close
2007-01-02 50.03978 50.11778 49.95041 50.11778
2007-01-03 50.03978 50.42188 49.95041 50.39767
2007-01-04 50.03978 50.42188 49.95041 50.33236
2007-01-05 50.03978 50.42188 49.95041 50.33459
2007-01-06 50.03978 50.42188 49.95041 50.18112
2007-01-07 50.03978 50.42188 49.95041 49.99185
2007-01-08 50.03978 50.42188 49.95041 49.98806
2007-01-09 49.99489 49.99489 49.80454 49.91333
2007-01-10 49.99489 50.13053 49.80454 49.97246
2007-01-11 49.99489 50.23910 49.80454 50.23910
2007-01-12 49.99489 50.35980 49.80454 50.28519
2007-01-13 49.99489 50.48000 49.80454 50.41286
2007-01-14 49.99489 50.62395 49.80454 50.60145
2007-01-15 49.99489 50.68583 49.80454 50.48912
....

此函数不会仅返回端点的数据,而是返回 xts 对象中的所有行的数据。例如,我想要从每日柱中获取每周柱(或从 1 分钟柱中获取 15 分钟柱),这样每天(或每分钟)我都会获得当前(从当天/分钟开始)的发展情况每周(15 分钟)柱的时间。因此,在周一,我将得到与周一完全相同的每周开盘价、最高价、最低价、收盘价,周二开盘价将从周一开始,收盘价将从周二开始,如果高于周一高价,则最高价将是周二高价如果低于周一低点,低点就是周二低点……周五我会从周一开始开盘,高点为整周的高点,低点为整周的低点,周五收盘。如果我使用 xts 中的 to.weekly 函数,周五的数据应该是相同的。

因此,基本上,这不仅仅是端点处的数据(如 xts to.weekly 所做的那样),而是原始 xts 对象的周期性可用的所有时间步长。所以不知怎的,一部关于每周酒吧几天发展的电影(每天我都会得到每周酒吧在每周结束时的位置)。

如何做到这一点(如何编写函数 to.weekly.cumulative?)?

有关如何做到这一点的示例受到高度赞赏。

编辑:尝试根据 DWin 评论进行更多解释。


不确定这是否是您想要的,但也许您可以通过以下方式完成这项工作:

  1. 创建一个循环索引(这里,wday) 为时间序列。
  2. Use rollapplyr使用wday作为窗口宽度。

这是一个例子:

z <- as.xts(sample_matrix)
wday <- .indexwday(z) + 1
wday <- (wday-3)%%7 + 1 # rotate the wday index if need.

z2 <- data.frame(
  Open = rollapplyr(z$Open, wday, function(x) x[1], partial = TRUE),
  High = rollapplyr(z$High, wday, max, partial = TRUE),
  Low = rollapplyr(z$Low, wday, min, partial = TRUE),
  Close = z$Close
  )

z2是这样的:

> head(z2, 15)
               Open     High      Low    Close
2007-01-02 50.03978 50.11778 49.95041 50.11778
2007-01-03 50.03978 50.42188 49.95041 50.39767
2007-01-04 50.03978 50.42188 49.95041 50.33236
2007-01-05 50.03978 50.42188 49.95041 50.33459
2007-01-06 50.03978 50.42188 49.95041 50.18112
2007-01-07 50.03978 50.42188 49.95041 49.99185
2007-01-08 50.03978 50.42188 49.95041 49.98806
2007-01-09 49.99489 49.99489 49.80454 49.91333
2007-01-10 49.99489 50.13053 49.80454 49.97246
2007-01-11 49.99489 50.23910 49.80454 50.23910
2007-01-12 49.99489 50.35980 49.80454 50.28519
2007-01-13 49.99489 50.48000 49.80454 50.41286
2007-01-14 49.99489 50.62395 49.80454 50.60145
2007-01-15 49.99489 50.68583 49.80454 50.48912
2007-01-16 50.62024 50.73731 50.56627 50.67835
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以累积的方式将xts转换为较低频率 的相关文章

  • 将所有 0 值替换为 NA

    我有一个包含一些数字列的数据框 某些行具有 0 值 在统计分析中应将其视为空 在R中将所有0值替换为NULL的最快方法是什么 将所有零替换为 NA df df 0 lt NA 解释 1 它不是NULL你应该用什么来替换零 正如它所说 NUL
  • 如何将 r 数据框转换为 h2o 对象

    我对 R 和 H2O 很陌生 我试图找到一种将 r 数据帧转换为 h2o 对象的方法 我花了一些时间研究如何做到这一点 但没有运气 其他方式也是可能的 并且有详细记录如下 prosPath system file extdata prost
  • 如何从 data.frame 中删除列?

    不是 你怎么 但更多的是 你怎么 如果有人给你一个包含 200 列的文件 并且你想将其减少到分析所需的少数列 你会如何做呢 一种解决方案是否比另一种解决方案更有优势 假设我们有一个包含列 col1 col2 到 col200 的数据框 如果
  • ggplot 中的条形图,每组有不同数量的条形图

    我的数据集如下所示 DSET lt data frame cbind c rep V1 3 rep V2 3 V3 c rep c X1 X2 X3 2 X1 c rep 1 7 names DSET lt c A B C DSET 3 l
  • 使用 Rgraphviz 中的 pos 参数来固定节点位置

    基于这个问题当弧与另一弧重叠时自动弯曲 https stackoverflow com questions 45721802 automatically curving an arc when it is overlapping with
  • 在 R 中使用 apply() 时出现未使用参数错误

    当我尝试对日期列使用 apply 条件以返回一组系数时 收到错误消息 我有一个数据集 为简单起见 此处进行了修改 但可重现 ADataset lt data table Epoch c 2007 11 15 2007 11 16 2007
  • 尝试使用 movie3d 制作 3D PCA 图(rgl)的电影

    我已经使用 pca3d 包在 R 中制作了 rgl 3D PCA 图 并且我正在尝试使用 movie3d 制作一个包含旋转图电影的 gif 文件 pca3d 包 makeMoviePCA 中有一个函数 它将其参数传递给 movie3d 这是
  • 使用 rvest 进行抓取 - 当标签不存在时,使用 NA 完成抓取

    我想解析这个 HTML 并从中获取这个元素 a p标签 与class normal encontrado b div with class price 有时 p某些产品中不存在标签 如果是这种情况 NA应添加到从该节点收集文本的向量中 这个
  • 如何使用 R 更改 png 文件的大小

    我正在绘制 png 文件并获取一张小图片 你知道一些可以改变 png 图大小的简单代码吗 我的地块太高太 薄 另外有没有办法改变情节的分辨率 谢谢 伊格尔 png png filename Rplot 03d png width 480 h
  • R:交换两个变量而不使用第三个变量

    我有两个变量 即 a lt 1 b lt 2 我想交换他们的价值观 是否有任何内置的 R 函数能够执行该操作 或者是否有其他优雅的方式 而不使用第三个 临时 变量 Note 如果可能的话适用于字符串或其他数据类型 有一个通用的解决方案或 技
  • 在 Shiny 应用程序中更改 bsModal 的背景

    我正在开发一个 Shiny 应用程序 我需要确保最终用户不会意外关闭 bsModal 因为它上面有一些操作按钮 我做了一些研究并了解到我需要覆盖背景和键盘参数 但即使我看到了一些建议 我也不知道这到底需要放在我的代码中的哪里 我不精通 Ja
  • 为什么表达式“1”==1 的计算结果为 TRUE? [复制]

    这个问题在这里已经有答案了 1 是字符值 其他1是数字 甚至 当我尝试在下面执行时 它给了我 TRUE as character 0 as numeric 0 谁能帮助我理解 为什么 来自help 如果两个参数是不同类型的原子向量 则其中一
  • 挑战:优化取消列出[简单]

    因为 SO 最近有点慢 所以我发布了一个简单的问题 如果大鱼们能在这场比赛中留在替补席上并给新秀们一个回应的机会 我将不胜感激 有时我们的对象具有大量的大列表元素 向量 您如何将这个对象 取消列出 到单个向量中 证明你的方法比unlist
  • 将一长行带空格的数据导入R中

    这个问题是我上一个问题的后续问题 将一长行数据导入到 R 中 https stackoverflow com questions 8389913 我有一个由单行文本组成的大型数据文件 格式类似于 Cat 14 15 Horse 16 我最终
  • R:igraph、社区检测、edge. Betweenness 方法、统计/列出每个社区的成员?

    我有一个相对较大的图表 其中顶点 524 边 1125 是现实世界的交易 边是有向的并且具有权重 包含是可选的 我正在尝试调查图中的各个社区 并且本质上需要一种方法 计算所有可能的社区 计算最佳社区数量 返回每个 最佳 社区的成员 成员数量
  • 缩放geom_密度以将geom_bar与y上的百分比相匹配

    因为我对数学感到困惑上次我尝试问这个问题 https stackoverflow com questions 32412805 ggplot2 histogram with density curve that sums to 1 这是另一
  • ggplot2以限制为中心的多边形世界地图给出了有趣的边缘

    使用下面的代码我生成了一张以华盛顿特区为中心的地图 解决方案基于科斯克的解决方案在这里 https stackoverflow com questions 10620862 use different center than the pri
  • 如何在复杂的皂膜GAM中设置更平滑的边界条件?

    我正在对南太平洋岛屿泻湖中宽吻海豚的分布进行建模 我想使用肥皂膜平滑器来模拟海豚在二维表面 经度 x 纬度 上存在的概率 考虑到陆地边界 显然海豚不能在陆地上行走 我想知道如何将我的研究区域 陆地和近海水域 的边界固定为等于零的条件 因为我
  • rpy2 无法加载外部库

    希望有人能帮忙解决这个问题 R版本 2 14 1rpy2版本 2 2 5蟒蛇版本 2 7 3 一直在尝试在 python 脚本中使用 rpy2 加载 R venneuler 包 该包以 rJava 作为依赖项 venneuler 和 rJa
  • 使用 alpha 通道叠加两个 ggplot2 stat_密度2d 图

    我想叠加两个ggplot2使用 alpha 通道进行绘图 结果图像显示两个数据集 这是我的测试数据 data read table text P1 1 0 4 nP2 0 0 2 nP3 2 1 8 nP4 2 2 6 nP5 0 5 2

随机推荐