【问题标题】:R: Synchronizing time series (xts) objectsR:同步时间序列(xts)对象
【发布时间】:2016-04-18 12:37:49
【问题描述】:

我需要处理数百个时间序列,这些时间序列大致对应于类似的测量值,但不同的人在不同的日子。

时间戳已经转换为 POSIX 格式。

我的问题是我想忽略时间序列是在不同日期和不同开始时间采样的事实。换句话说,我想重新格式化时间序列,使它们从完全相同的开始时间开始计算秒数,以便更容易比较它们。

以下是两个系列的示例:

系列 1 的时代:

"2015-10-15 07:48:59 CEST", "2015-10-15 07:49:59 CEST", "2015-10-15 07:50:59 CEST", ...

系列 2 的时代:

"2015-10-17 02:08:59 CEST", "2015-10-17 02:09:59 CEST", "2015-10-17 02:10:59 CEST", ...

这两个系列都应该映射到一种标准时间框架,例如

"2000-01-01 09:00:00 CEST", "2000-01-01 09:00:01 CEST", "2000-01-01 09:00:02 CEST", ...

你会怎么做?

【问题讨论】:

    标签: r time-series xts


    【解决方案1】:

    您只需要分别从每个索引中减去第一个索引值。例如:

    require(xts)
    data(sample_matrix)
    x <- as.xts(sample_matrix, dateFormat="Date")
    head(x)
    #                Open     High      Low    Close
    # 2007-01-02 50.03978 50.11778 49.95041 50.11778
    # 2007-01-03 50.23050 50.42188 50.23050 50.39767
    # 2007-01-04 50.42096 50.42096 50.26414 50.33236
    # 2007-01-05 50.37347 50.37347 50.22103 50.33459
    # 2007-01-06 50.24433 50.24433 50.11121 50.18112
    # 2007-01-07 50.13211 50.21561 49.99185 49.99185
    index(x) <- index(x) - unclass(start(x))
    head(x)
    #                Open     High      Low    Close
    # 1970-01-01 50.03978 50.11778 49.95041 50.11778
    # 1970-01-02 50.23050 50.42188 50.23050 50.39767
    # 1970-01-03 50.42096 50.42096 50.26414 50.33236
    # 1970-01-04 50.37347 50.37347 50.22103 50.33459
    # 1970-01-05 50.24433 50.24433 50.11121 50.18112
    # 1970-01-06 50.13211 50.21561 49.99185 49.99185
    

    【讨论】:

    • 非常感谢!但是,如果我想将时间序列的开始映射到单个 POSIXct 对象,这将如何工作: ref.start
    • 只需将该秒数添加到索引中。
    猜你喜欢
    • 1970-01-01
    • 2013-04-30
    • 1970-01-01
    • 2017-02-25
    • 2018-02-28
    • 1970-01-01
    • 2016-11-09
    • 2021-07-14
    • 1970-01-01
    相关资源
    最近更新 更多