【问题标题】:ADD a new column into an XTS object将新列添加到 XTS 对象中
【发布时间】:2013-10-25 21:41:15
【问题描述】:

嗨:我有一个这样的 xts 对象:

           AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
2013-09-09    505.00    507.92   503.48     506.17    12116200        506.17
2013-09-10    506.20    507.45   489.50     494.64    26490200        494.64
2013-09-11    467.01    473.69   464.81     467.71    32031600        467.71
2013-09-12    468.50    475.40   466.01     472.69    14409400        472.69

我尝试计算滚动平均值并将其附加到新列中

AA["AAPL.Rolling"] <- rollmean(AA[,"AAPL.Adjusted"],12)

虽然rollmean(AA[,"AAPL.Adjusted"],12) 可以独立工作;当我尝试附加到新列时收到错误消息。 ** 也让这变得困难的是,新的滚动平均值不会在每一行都有数据,因为前 12 应该是“NA”有人可以帮忙吗?非常感谢。

【问题讨论】:

  • 您尝试的解决方案没有任何意义。 rnorm(12, AA) 为您提供来自 mean=AA[1:12,1] 和 sd=1 的随机正态分布的 12 个观察值。这甚至不接近滚动平均值。并且您正在尝试将 zoo 对象添加为 xts 对象的列?为什么你认为这应该有效?
  • @JoshuaUlrich,我的错 - 我编辑了我的原件

标签: r xts quantmod


【解决方案1】:

您不能像这样向 zoo/xts 对象添加列。不过你可以使用$&lt;- 函数。

AA$AAPL.Rolling <- rollmean(AA[,"AAPL.Adjusted"], 12)

还要注意rollmean 默认是居中对齐的。您可能想使用rollmeanr 来获得右对齐。使用NA 填充将自动发生,因为您正在将滚动平均值与原始对象合并。如果您希望 rollmean 显式添加它们,请使用 fill=NA。

【讨论】:

  • 这是完美的;甚至预料到 rollmean 会出现问题!
  • 有兴趣了解 Josh 对向这些 xts 对象添加字符向量的看法。所以你会有一个 char 列和一个 int/numeric 列....
  • @d8aninja:这是不可能的,因为 xts 对象基于矩阵类,并且矩阵中不能有不同类型的列。也就是说,已经对“xtsdf”类进行了一些实验。
  • 我明白了。试图考虑使这些对象对 ggplot 和 highcharter 友好。后者特别为 xts (“stock” 类型)提供了一些不错的预设,但是如果您想动态实验室系列,您必须切换到 data.frame 并使用 zoo::index 将 xts 行名拉到一个列
猜你喜欢
  • 1970-01-01
  • 2013-08-03
  • 2016-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-25
  • 2021-09-28
  • 1970-01-01
相关资源
最近更新 更多