【问题标题】:Dividing each row of an xts or zoo time series object by a fixed row将 xts 或 zoo 时间序列对象的每一行除以固定行
【发布时间】:2011-12-21 19:13:41
【问题描述】:

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

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

这行得通。但是,试图操纵 xts 对象及其行子集xts['2010-09-30'] 并不容易。有人可以指出我正确的方向。我意识到这是非常基本的,我应该自己找到答案。事实上,如果有更好的方法来使用包以这种方式重新设置时间序列,我很乐意采用这种方法。

【问题讨论】:

    标签: r xts zoo


    【解决方案1】:

    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 的数据合并操作的查询有什么建议吗?如果这是一个真正的问题,我会寻找其他方向......我只是想确保它不是我的初学者错误......
    • 绝对有效!再次感谢。我最近经常使用 coredata....不知道我是怎么忘记的...:)
    猜你喜欢
    • 2012-08-10
    • 2011-03-14
    • 2011-05-21
    • 2013-04-30
    • 1970-01-01
    • 2017-03-28
    • 2020-06-08
    • 2011-06-11
    • 1970-01-01
    相关资源
    最近更新 更多