以格式 hh:mm:ss 创建 32Hz 的时间序列
Create sequence of times for 32Hz in format hh:mm:ss
我想创建一个从 00:00:00 到 00:38:24 的时间序列,间隔为 1/32 秒。这意味着会重复很多次,但没关系。
我试过:
require(lubridate)
#Convert 00:38:24 to seconds
timeEnd<-period_to_seconds(hms("00:38:24"))
>timeEnd
[1] 2304
#Total number of elements in sequence
timeEnd*32Hz=73728 elements
#Create a sequence from 0 to timeEnd in 1/32 steps
t<-seq(0,timeEnd,by=1/32) #This bit is wrong! makes 73729 elements
#Convert to 00:00:00 format
sprintf('%02d:%02d:%02d', seconds_to_period(t)@hour, minute(seconds_to_period(t)), second(seconds_to_period(t)))
>t[1:5]
[1] "00:00:00" "00:00:00" "00:00:00" "00:00:00" "00:00:00"
- 有更好的解决方案吗?
- 序列中的元素数量错误。它应该是 73728,但我得到了 73729。为什么?
我不知道这是不是更好的解决方案;但仅使用 base 和 stringi 并使用函数作为包装器以获得更大的灵活性。时间值可以作为字符传递,时间增量可以作为分数或其他任何形式。
f <- function(start_time = "00:00:00", end_time = "00:38:24",
time_inc = 1/32, ...){
options(digits.secs=4)
tl <- lapply(list(start_time, end_time), function(i){
as.POSIXct(i, format = "%H:%M:%OS", tz = "EST")
})
as_seq <- seq(tl[[1]], tl[[2]], by = time_inc)
stringi::stri_datetime_format(as_seq, format = "HH:mm:ss:SSSS")
}
time.seq <- f()
> head(time.seq)
[1] "00:00:00:0000" "00:00:00:0310" "00:00:00:0620" "00:00:00:0930" "00:00:00:1250" "00:00:00:1560"
> tail(time.seq)
[1] "00:38:23:8430" "00:38:23:8750" "00:38:23:9060" "00:38:23:9370" "00:38:23:9680" "00:38:24:0000"
我想创建一个从 00:00:00 到 00:38:24 的时间序列,间隔为 1/32 秒。这意味着会重复很多次,但没关系。
我试过:
require(lubridate)
#Convert 00:38:24 to seconds
timeEnd<-period_to_seconds(hms("00:38:24"))
>timeEnd
[1] 2304
#Total number of elements in sequence
timeEnd*32Hz=73728 elements
#Create a sequence from 0 to timeEnd in 1/32 steps
t<-seq(0,timeEnd,by=1/32) #This bit is wrong! makes 73729 elements
#Convert to 00:00:00 format
sprintf('%02d:%02d:%02d', seconds_to_period(t)@hour, minute(seconds_to_period(t)), second(seconds_to_period(t)))
>t[1:5]
[1] "00:00:00" "00:00:00" "00:00:00" "00:00:00" "00:00:00"
- 有更好的解决方案吗?
- 序列中的元素数量错误。它应该是 73728,但我得到了 73729。为什么?
我不知道这是不是更好的解决方案;但仅使用 base 和 stringi 并使用函数作为包装器以获得更大的灵活性。时间值可以作为字符传递,时间增量可以作为分数或其他任何形式。
f <- function(start_time = "00:00:00", end_time = "00:38:24",
time_inc = 1/32, ...){
options(digits.secs=4)
tl <- lapply(list(start_time, end_time), function(i){
as.POSIXct(i, format = "%H:%M:%OS", tz = "EST")
})
as_seq <- seq(tl[[1]], tl[[2]], by = time_inc)
stringi::stri_datetime_format(as_seq, format = "HH:mm:ss:SSSS")
}
time.seq <- f()
> head(time.seq)
[1] "00:00:00:0000" "00:00:00:0310" "00:00:00:0620" "00:00:00:0930" "00:00:00:1250" "00:00:00:1560"
> tail(time.seq)
[1] "00:38:23:8430" "00:38:23:8750" "00:38:23:9060" "00:38:23:9370" "00:38:23:9680" "00:38:24:0000"