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.period
与 endpoints
一起使用,并且按照您的方式使用 to.period
将采用第二个的最后一个值。 to.period
不对值进行四舍五入。如果你想要,你可以使用 lubridate 的 round_date
或 floor_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
我正在尝试使用 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.period
与 endpoints
一起使用,并且按照您的方式使用 to.period
将采用第二个的最后一个值。 to.period
不对值进行四舍五入。如果你想要,你可以使用 lubridate 的 round_date
或 floor_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