向XTS对象添加新列

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] 和标准差为1的随机正态分布中获得12个观察值,这与滚动均线根本不接近。而你正在尝试将一个zoo对象添加到xts对象的列中?为什么你认为这会奏效? - Joshua Ulrich
1个回答

19

你不能像那样向zoo/xts对象添加列。不过,你可以使用$<-函数。

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

还要注意,默认情况下rollmean是居中对齐的。您可能想使用rollmeanr以获得右对齐。由于正在将滚动平均值与原始对象合并,因此自动填充NA。如果您希望rollmean明确添加它们,请使用fill=NA


这太完美了,甚至预料到了rollmean的问题! - Ahdee
有兴趣知道Josh对于在这些xts对象中添加字符向量的看法。这样你就会有一个字符列和一个int/numeric列... - d8aninja
@d8aninja:这是不可能的,因为xts对象基于矩阵类,而在矩阵中不能有不同类型的列。尽管如此,已经进行了一些关于“xtsdf”类的实验。 - Joshua Ulrich
我了解了。试图考虑让这些对象友好化,以适应ggplot和highcharter。后者尤其针对xts("股票"类型)有一些不错的预设,但是如果您想动态标记系列,则必须切换到data.frame并使用zoo::index将xts行名提取到列中。 - d8aninja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接