代码之家  ›  专栏  ›  技术社区  ›  zer0hedge

为什么xts的endpoints()忽略区间右边界上的数据?

  •  1
  • zer0hedge  · 技术社区  · 7 年前

    t t <- xts(1:6, order.by=seq(as.POSIXct("2000-01-01 00:01:00", tz="GMT"), length.out = 6, by="1 min"))

                        [,1]
    2000-01-01 00:01:00    1
    2000-01-01 00:02:00    2
    2000-01-01 00:03:00    3
    2000-01-01 00:04:00    4
    2000-01-01 00:05:00    5
    2000-01-01 00:06:00    6
    

    我希望如此 endpoints(t, on="mins", k=3) c(0, 3, 6) 2000-01-01 00:03:00 , 2000-01-01 00:06:00 .

    相反,它返回 c(0,2,5,6) .这种行为背后的逻辑是什么?

    那么,前导零是什么原因?文档中写着它存在,但为什么?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Joshua Ulrich    7 年前

    你问题的前提是不正确的。 endpoints() 不忽略区间右界上的数据。您的示例数据仅包括左边界上的值;i、 e.数据中的所有观察都发生在每分钟的开始。如果它们确实是右边界,则意味着“2000-01-01 00:00:00.000”是1999年的最后一个观察值。

    第一个元素需要为零,因为 用于其他功能。假设可以重构代码,以消除第一个元素为零的要求。我假设这样说,因为重构可能会破坏其他代码,这让我不愿意这么做。