我正在尝试划分一个拥有多个时间序列(列)的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']))