在一个xts或zoo时间序列对象中,将每行除以一个固定的行。

3

我正在尝试对一个包含多个时间序列(列)的xts对象进行划分,这些序列共享一个日期列(索引)。我想将每一列除以指定日期(比如“2010-09-30”)的值。这样可以重新调整整个对象,在该日期的每一列中都有值为1(这是一项常见的重新基准任务)。如果这是一个普通矩阵A,我想要重新基准的行是A[6,],那么我只需要执行以下操作:

t(t(A)/A[6,])

这个可以实现。但是,尝试操作xts对象及其行子集xts['2010-09-30']不太容易。请问有人能指点我正确的方向吗?我意识到这非常基础,应该自己找到答案。实际上,如果有更好的方法来使用包重新定位时间序列,我很乐意采用那种方法。

1个回答

3

在进行操作之前,xts和zoo对象都会根据索引对齐。如果你想将整个对象除以单行的某个值,你需要使用coredata(也许还需要drop)来获取一个原子向量(只有一个元素)的值。

例如:

library(xts)
x <- xts(1:10,as.Date("2011-12-21")+1:10)
x / drop(coredata(x['2011-12-26']))

非常感谢 @Joshua,像往常一样。我现在会尝试这个。顺便问一下,关于昨天我的那个使用quantmod进行数据合并操作的问题,你有什么建议吗?如果这是一个真正的问题,我会寻找其他方向...我只是想确保这不是我自己的初学者错误... - Tatha
绝对有效!再次感谢。最近我一直在使用CoreData...不知道怎么会忘记了... :) - Tatha

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