to.period() 无法正常工作 - 尾随毫秒

to.period() does not work properly - trailing milliseconds

我正在尝试使用 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 时间戳输出四舍五入到秒。

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