【问题标题】:R xts: millisecond indexR xts:毫秒索引
【发布时间】:2012-03-20 20:45:49
【问题描述】:

如何创建索引包含毫秒的 xts 对象?我在 POSIXlt 帮助页面中找不到任何格式规范,但 indexFormat() 中有一个 reference 到 %OS。

更新

基于 Gavin zoo 答案的 xts 示例:

> options(digits.secs = 3)
> data(sample_matrix)
> sample.xts = xts(sample_matrix, Sys.time() + seq(0, by = 0.1, length = 180))
> head(sample.xts)
                            Open     High      Low    Close
2012-03-20 08:49:02.820 50.03978 50.11778 49.95041 50.11778
2012-03-20 08:49:02.920 50.23050 50.42188 50.23050 50.39767
2012-03-20 08:49:03.020 50.42096 50.42096 50.26414 50.33236
2012-03-20 08:49:03.120 50.37347 50.37347 50.22103 50.33459
2012-03-20 08:49:03.220 50.24433 50.24433 50.11121 50.18112
2012-03-20 08:49:03.320 50.13211 50.21561 49.99185 49.99185

【问题讨论】:

    标签: r xts


    【解决方案1】:

    这适用于包 zoo 所以我怀疑它也适用于 xts 因为后者建立在前者之上。

    > ## create some times with milliseconds
    > times <- Sys.time() + seq(0, by = 0.1, length = 10)
    > times
     [1] "2012-03-19 22:10:57.763 GMT" "2012-03-19 22:10:57.863 GMT"
     [3] "2012-03-19 22:10:57.963 GMT" "2012-03-19 22:10:58.063 GMT"
     [5] "2012-03-19 22:10:58.163 GMT" "2012-03-19 22:10:58.263 GMT"
     [7] "2012-03-19 22:10:58.363 GMT" "2012-03-19 22:10:58.463 GMT"
     [9] "2012-03-19 22:10:58.563 GMT" "2012-03-19 22:10:58.663 GMT"
    > ZOO <- zoo(1:10, order = times)
    > index(ZOO)
     [1] "2012-03-19 22:10:57.763 GMT" "2012-03-19 22:10:57.863 GMT"
     [3] "2012-03-19 22:10:57.963 GMT" "2012-03-19 22:10:58.063 GMT"
     [5] "2012-03-19 22:10:58.163 GMT" "2012-03-19 22:10:58.263 GMT"
     [7] "2012-03-19 22:10:58.363 GMT" "2012-03-19 22:10:58.463 GMT"
     [9] "2012-03-19 22:10:58.563 GMT" "2012-03-19 22:10:58.663 GMT"
    

    查看毫秒的技巧是通过options() 更改digits.secs 选项。以上使用:

    > getOption("digits.secs")
    [1] 3
    

    使用哪个设置

    > opts <- options(digits.secs = 3)
    

    您可以通过执行options(opts) 将其重置为默认值 (0)。默认情况下,R 不会打印亚秒级信息,因为 digits.secs 默认为 0。即使没有打印,数据也会以亚秒级的精度记录。

    如果这不是你的意思,你能解释一下你做了什么没用吗?

    【讨论】:

    • Gavin,只是为了说明清楚以供参考:毫秒是在索引的小数部分指定的?
    • 是的,抱歉没有解释 POSIXt 方面的事情。 Sys.time() 返回毫秒精度,我添加了 0.1 秒增量的序列。 R 只是在给定默认选项的情况下对您隐藏它。在您的实际时间中,如果秒是小数,. 之后的位代表亚秒位,R 将使用 input 上的%S 占位符处理该问题。在 output 上,%S 将删除亚秒位,但 %OSn 占位符将保留它们。 n0:6 范围内的数字,指定亚秒位数。如果缺少n,则使用getOption("digits.secs")
    • @RobertKubrick 请阅读?strftime 了解所用占位符的详细信息及其含义。
    猜你喜欢
    • 2011-05-16
    • 2017-02-26
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 2020-07-23
    相关资源
    最近更新 更多