我想制作一个时间索引,从9:15:00开始,以30分钟的间隔进行,然后在03:30:00结束。例如。 9:15:00,10:05:00,10:55:00等等。这是我的代码,可以完美地创建第一天的这些时间指数。但是,它会在第二天搞砸, 从09:25:00开始,而不是09:15:00 ,并且所有间隔都会出错。开始时间每天都在变化。
Intervals <- seq(as.POSIXct("2016-04-01 09:15:00", format="%Y-%m-%d %H:%M:%S"), as.POSIXct("2016-04-29 15:30:00", format="%Y-%m-%d %H:%M:%S"),
by="50 min")
我正在尝试通过仅将参数by="50 min"
更改为by="55 min"
来计算各种间隔,并且需要灵活地修复结束时间,因此我将其作为 放在15之前:30:00 。请我解决它?
答案 0 :(得分:6)
您可能最好生成一个序列并在每天重复使用它。如此:
start <- "2016-04-01"
stop <- "2016-04-29"
daylength <- difftime(as.POSIXct(stop), as.POSIXct(start), units="days")
Intervals <- seq(
as.POSIXct(paste(start, "09:15")),
as.POSIXct(paste(start, "15:30")),
by="50 min"
)
out <- Intervals + as.difftime(rep(0:daylength, each=length(Intervals)), units="days")
range(out)
#[1] "2016-04-01 09:15:00 AEST" "2016-04-29 15:05:00 AEST"
答案 1 :(得分:1)
使用cut
函数可能值得探索。例如,对于天的集合:
myDays <-
seq(
from = as.Date("2016-04-01"),
to = as.Date("2016-04-29"),
by = "day"
)
每天可以通过以下方式每隔50分钟到达一次:
myIntervals <-
data.frame(table(cut(x = as.POSIXct(myDays), breaks = "50 min")))
>> head(myIntervals, 10)
Var1 Freq
1 2016-04-01 01:00:00 1
2 2016-04-01 01:50:00 0
3 2016-04-01 02:40:00 0
4 2016-04-01 03:30:00 0
5 2016-04-01 04:20:00 0
6 2016-04-01 05:10:00 0
7 2016-04-01 06:00:00 0
8 2016-04-01 06:50:00 0
9 2016-04-01 07:40:00 0
10 2016-04-01 08:30:00 0