r语言 - 将xts或zoo时间序列对象的每一行除以固定的一行



我正在尝试划分一个拥有多个时间序列(列)的xts对象;具有公共日期列(索引)。我想用每一列除以它在指定日期的值(比如‘2010-09-30’)。这是为了在该日期用每列中的值为1来重新缩放整个对象(一个常见的重新定位任务)。如果它是一个普通的矩阵A,而我想要变换成A[6,]的那一行,我可以只做

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

就行了。但是,试图操纵xts对象和它的行子集xts['2010-09-30']不容易工作。谁能给我指个正确的方向?我意识到这是非常基本的,我应该自己找到答案。事实上,如果有一种更好的方法可以使用包以这种方式重新定义时间序列,我很乐意采用这种方法。

xts和zoo对象在操作前按索引对齐。如果要将整个对象除以单行上的值,则必须使用coredata(可能还有drop)将值获取为原子向量(只有一个元素)。

例如:

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

最新更新