【问题标题】:How to group/sum xts time series by whole seconds如何按整秒对 xts 时间序列进行分组/求和
【发布时间】:2019-05-05 08:02:45
【问题描述】:

任何包都可以做下面的例子吗?我有很大的xts 毫秒级数据集。
我可以将coredata 加到第二级吗?
时间是索引。

例如:

理想的结果是:

【问题讨论】:

  • 请通过包含我们可以复制并粘贴到 R 中的数据来使您的示例可重现。尝试使用 dput(data) 函数并粘贴到输出而不是数据帧的图像中

标签: r time-series aggregate xts


【解决方案1】:

您可以使用zoo 包中的aggregate.zoo() 进行聚合。

library(xts)
library(zoo)

# A simple example time series
xx <- xts(1:20, as.POSIXct((1:20)/5, origin="2000-01-01"))

aggregate(xx, as.POSIXct(trunc(time(xx), "sec")), sum)

# 2000-01-01 01:00:00 10
# 2000-01-01 01:00:01 35
# 2000-01-01 01:00:02 60
# 2000-01-01 01:00:03 85
# 2000-01-01 01:00:04 20

【讨论】:

    【解决方案2】:
    library(xts)
    
    # To see subsecond timestamp values:
    options(digits.secs = 3)
    
    set.seed(1)
    x <- xts(rnorm(10), as.POSIXct("2018-11-01 00:00:00.3") + seq(0.05, 3, length.out = 10))
    # [,1]
    # 2018-11-01 00:00:00.349 -0.6264538
    # 2018-11-01 00:00:00.677  0.1836433
    # 2018-11-01 00:00:01.005 -0.8356286
    # 2018-11-01 00:00:01.333  1.5952808
    # 2018-11-01 00:00:01.661  0.3295078
    # 2018-11-01 00:00:01.988 -0.8204684
    # 2018-11-01 00:00:02.316  0.4874291
    # 2018-11-01 00:00:02.644  0.7383247
    # 2018-11-01 00:00:02.972  0.5757814
    # 2018-11-01 00:00:03.299 -0.3053884
    

    要对第二个点内的值求和,您可以使用 xts 的 period.apply,并结合使用 xts 的 endpoints 查找每秒内最后一次观察的索引:

    ep <- endpoints(x, on = "seconds", k = 1)
    
    xs <- period.apply(x, ep, sum)
    

    “整秒”时间戳可能是不可取的,然后您可以使用 xts 的align.time 修复它,它会四舍五入到秒的末尾(重要的是要四舍五入到秒的末尾,以避免在您的数据)

    xs
    #                               [,1]
    # 2018-11-01 00:00:00.677 -0.4428105
    # 2018-11-01 00:00:01.988  0.2686916
    # 2018-11-01 00:00:02.972  1.8015351
    # 2018-11-01 00:00:03.299 -0.3053884
    
    xs <- align.time(xs, n = 1)
    xs
    #                           [,1]
    # 2018-11-01 00:00:01 -0.4428105
    # 2018-11-01 00:00:02  0.2686916
    # 2018-11-01 00:00:03  1.8015351
    # 2018-11-01 00:00:04 -0.3053884
    

    【讨论】:

      猜你喜欢
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-17
      • 2019-11-12
      相关资源
      最近更新 更多