【问题标题】:zoo objects and millisecond timestamps动物园对象和毫秒时间戳
【发布时间】:2012-07-15 17:46:58
【问题描述】:

关于分时数据的快速问题。我有大量采用这种格式的数据,我认为这些数据非常适合我想要实现的目标。我想保持一定的粒度,以便能够在一秒钟内触发买入/卖出信号。

数据

       SYMBOL  TIMESTAMP            STAMP   PRICE  SIZE EXCHANGE   BID BIDEX BIDSIZE   ASK ASKEX ASKSIZE
1        SPXU 1330938005 1330938005000000      NA    NA       9.99   PSE       5 10.10   PSE       6
2        SPXU 1330938221 1330938221000000      NA    NA       9.99   PSE       5 10.19   PSE       1
3        SPXU 1330938221 1330938221000001 10.1000   600      PSE    NA        NA    NA        NA
4        SPXU 1330938392 1330938392000000      NA    NA      10.00   PSE     174 10.19   PSE       1
5        SPXU 1330938431 1330938431000000      NA    NA      10.00   PSE     175 10.19   PSE       1
6        SPXU 1330938468 1330938468000000      NA    NA      10.00   PSE       1 10.19   PSE       1
7        SPXU 1330938736 1330938736000000      NA    NA      10.04   PSE      46 10.19   PSE       1
8        SPXU 1330938843 1330938843000000      NA    NA      10.04   PSE      47 10.19   PSE       1
9        SPXU 1330939576 1330939576000000      NA    NA      10.04   PSE       1 10.19   PSE       1
10       SPXU 1330939615 1330939615000000      NA    NA      10.05   PSE     100 10.19   PSE       1
11       SPXU 1330939615 1330939615000001      NA    NA      10.05   PSE     100 10.19   PSE     101
12       SPXU 1330939621 1330939621000000      NA    NA      10.04   PSE       1 10.19   PSE     101
13       SPXU 1330939621 1330939621000001      NA    NA      10.04   PSE       1 10.19   PSE       1
14       SPXU 1330939623 1330939623000000      NA    NA      10.05   PSE      46 10.19   PSE       1
15       SPXU 1330939623 1330939623000001      NA    NA      10.05   PSE      46 10.18   PSE      46
16       SPXU 1330939638 1330939638000000      NA    NA      10.04   PSE       1 10.18   PSE      46
17       SPXU 1330939686 1330939686000000      NA    NA      10.04   PSE       1 10.19   PSE       1
18       SPXU 1330939825 1330939825000000      NA    NA      10.05   PSE     100 10.19   PSE       1
19       SPXU 1330939825 1330939825000001      NA    NA      10.05   PSE     100 10.19   PSE     101
20       SPXU 1330939833 1330939833000000      NA    NA      10.04   PSE       1 10.19   PSE     101
21       SPXU 1330939833 1330939833000001      NA    NA      10.04   PSE       1 10.19   PSE       1
22       SPXU 1330939833 1330939833000002      NA    NA      10.04   PSE     101 10.19   PSE       1
23       SPXU 1330939833 1330939833000003      NA    NA      10.04   PSE     101 10.19   PSE     101
24       SPXU 1330939941 1330939941000000      NA    NA      10.04   PSE     101 10.19   PSE     102
25       SPXU 1330940041 1330940041000000      NA    NA      10.04   PSE       1 10.19   PSE     102

我希望能够创建保持毫秒粒度的动物园对象。我无法将“data$STAMP”转换为日期。我该怎么做?

工作:

> as.POSIXlt(data2$TIMESTAMP[3], origin="1970-01-01", tz="EST")
[1] "2012-03-05 04:01:36 EST"

不工作:

> as.POSIXlt(data2$STAMP[3], origin="1970-01-01", tz="EST")
[1] "))0'-06-03 15:45:52 EST"

【问题讨论】:

    标签: r zoo


    【解决方案1】:

    这本质上是一个常见问题解答——您需要 options("digits.secs"=6) 默认显示亚秒级时间信息。

    证人:

    R> Sys.time()                    # using defaults: no milli or micros
    [1] "2012-07-15 12:51:17 CDT"
    R> options("digits.secs"=6)      # changing defaults: presto!
    R> Sys.time()
    [1] "2012-07-15 12:51:30.218308 CDT"
    R> 
    

    现在将它与合适的数字向量结合,适当地转换为 R 的日期时间类型:

    R> vec <- 1330938005000000 + cumsum(runif(1:5)*10)
    R> vec
    [1] 1.331e+15 1.331e+15 1.331e+15 1.331e+15 1.331e+15
    R> as.POSIXct(vec/1e6, origin="1970-01-01")
    [1] "2012-03-05 09:00:05.000004 CST"
    [2] "2012-03-05 09:00:05.000006 CST"
    [3] "2012-03-05 09:00:05.000016 CST"
    [4] "2012-03-05 09:00:05.000021 CST"
    [5] "2012-03-05 09:00:05.000029 CST"
    R> 
    

    【讨论】:

    • 试过这个.. 仍然无法从数字格式化...:> options("digits.secs"=6) > as.POSIXlt(data2$STAMP[3], origin=" 1970-01-01", tz="EST") [1] "))0'-06-03 15:45:52 EST" >
    • 见我编辑的答案。如果这没有帮助,请提供更多关于您尝试过什么以及失败什么的详细信息。
    • 似乎有效,最后一件事,知道为什么它显示错误的 tz 吗?/plugins# date -d @1330938005 Mon Mar 5 04:00:05 EST 2012 &gt; as.POSIXct(data$STAMP[1]/1e6, origin="1970-01-01", tz="EST") [1] "2012-03-05 09:00:05 EST" &gt; as.POSIXct(data$TIMESTAMP[1], origin="1970-01-01", tz="EST") [1] "2012-03-05 09:00:05 EST" &gt; as.POSIXct(1330938005, origin="1970-01-01", tz="EST") [1] "2012-03-05 09:00:05 EST"
    • +1 Dirk,我将其称为 zoo(或其他任何需要 4dps)的已知问题。我第一次看到它时,我花了一个小时来自我诊断和修复。
    猜你喜欢
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 2011-12-14
    相关资源
    最近更新 更多