【问题标题】:to.period() does not work properly - trailing millisecondsto.period() 无法正常工作 - 尾随毫秒
【发布时间】:2021-06-09 20:01:55
【问题描述】:

我正在尝试使用 to.period 将毫秒数据转换为常规秒级数据 - 但是最终输出具有尾随毫秒

dput(head(x$Mid,20))
structure(c(3228.5, 3228.5, 3228.5, 3229, 3229, 3229, 3229.5, 
3229.5, 3229.5, 3229, 3229.5, 3229.5, 3229.5, 3230, 3228.5, 3231.5, 
3231, 3231, 3230, 3231), class = c("xts", "zoo"), index = structure(c(1543804206.41, 
1543804206.55, 1543804206.63, 1543804206.68, 1543804206.75, 1543804206.8, 
1543804206.85, 1543804206.93, 1543804206.97, 1543804207.03, 1543804207.07, 
1543804207.1, 1543804207.14, 1543804207.22, 1543804207.29, 1543804207.44, 
1543804207.7, 1543804207.75, 1543804207.88, 1543804207.93), tzone = "", tclass = c("POSIXct", 
"POSIXt")), .Dim = c(20L, 1L), .Dimnames = list(NULL, "Mid"))


dput(to.period(head(x$Mid,20),"seconds"))
structure(c(3228.5, 3229, 3229.5, 3231.5, 3228.5, 3228.5, 3229.5, 
3231), .Dim = c(2L, 4L), .Dimnames = list(NULL, c("head(x$Mid, 20).Open", 
"head(x$Mid, 20).High", "head(x$Mid, 20).Low", "head(x$Mid, 20).Close"
)), index = structure(c(1543804206.97, 1543804207.93), tzone = "", tclass = c("POSIXct", 
"POSIXt")), class = c("xts", "zoo"))

如何使时间戳上的 to.period 输出舍入到秒。

【问题讨论】:

    标签: r dataframe tidyr xts zoo


    【解决方案1】:

    to.periodendpoints 一起使用,并且以您正在做的方式使用to.period 将采用第二个的最后一个值。 to.period 不会对值进行四舍五入。如果你愿意,你可以使用 lubridate 的 round_datefloor_date 函数来获得你想要的。

    一个基于你的 x$MID 的小例子:

    t <- to.period(x, "seconds", OHLC = FALSE)
    t
                              Mid
    2018-12-03 03:30:06.97 3229.5
    2018-12-03 03:30:07.93 3231.0
    
    library(lubridate)
    index(t) <- floor_date(index(t), "1s") # replace index with floor value
    
    t
                           Mid
    2018-12-03 03:30:06 3229.5
    2018-12-03 03:30:07 3231.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-20
      • 2017-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-26
      • 1970-01-01
      相关资源
      最近更新 更多