【问题标题】:xts comparison to another xts object does not workxts 与另一个 xts 对象的比较不起作用
【发布时间】:2011-10-29 04:08:57
【问题描述】:
this =
  structure(c(-0.012, -0.028, -0.044, -0.033, -0.039, -0.042), .Dim = c(3L, 2L),
  .Dimnames = list(NULL, c("one", "two")), index = structure(
  c(1313643600, 1313730000, 1313816400), tzone = "", tclass = "Date"),
  .indexCLASS = "Date", .indexTZ = "", class = c("xts", "zoo"))

m1=last(this$one) - last(this$two)
m2=first(last(this$one,n=2)) - first(last(this$two,n=2))

m1 > 0 #returns a TRUE OR FALSE
m1 > m2 #breaks

我知道我可以使用coredata 提取然后比较。我不确定这是否是错误。比较工作似乎并不一致,甚至数学运算符在 xts 对象上工作得很好,但是将一个 xts 与另一个进行比较失败。

【问题讨论】:

    标签: r xts


    【解决方案1】:

    xts 逻辑运算符的工作方式与 xts 数学运算符一样。如果两个参数都是 xts 对象,则两个参数的索引值必须匹配。在您的情况下,m1m2 具有不同的索引值。

    m1 > 0
    #              one
    # 2011-08-20 FALSE
    m1 > m2
    #     [,1]
    m1
    #               one
    # 2011-08-20 -0.002
    m2
    #              one
    # 2011-08-19 0.011
    

    【讨论】:

      【解决方案2】:

      这与一般的时间序列一致。您无法比较(或执行任何操作)来自不同时间段的值。 xts 实际上可以防止无法自然发生的行为。如果您需要将一个时期与另一个时期进行比较,则需要通过 coredata() 或使用 lag() 运算符强制。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-28
        • 1970-01-01
        • 1970-01-01
        • 2019-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-13
        相关资源
        最近更新 更多