问题描述
我希望获得一系列时间戳,从'2020-08-31 09:00:00'开始,到'2020-10-30 21:00:00'结束。我想将结果变量与之相关联,以使结果每30分钟100个,接下来5分钟1000个,接下来30分钟100个,依此类推。该系统的值在30分钟内为100,在接下来的5分钟内为1000,然后在30分钟内再次为100。
预先感谢
#Example OUTPUT
TIMESTAMP OUTCOME
'2020-08-31 09:00:00' 100
'2020-08-31 09:30:00' 1000
'2020-08-31 09:35:00' 100
'2020-08-31 10:05:00' 1000
'2020-08-31 10:10:00' 100
'2020-08-31 10:40:00' 1000
非常感谢
解决方法
我们可以使用seq
library(lubridate)
start <- as.POSIXct('2020-08-31 09:00:00')
timestamp <- c(start,start + minutes(cumsum(rep(c(30,5),2500))))
timestamp <- timestamp[timestamp <= '2020-10-30 21:00:00']
out <- data.frame(TIMESTAMP = timestamp,OUTCOME = rep(c(100,1000),length.out = length(timestamp)))
head(out)
# TIMESTAMP OUTCOME
#1 2020-08-31 09:00:00 100
#2 2020-08-31 09:30:00 1000
#3 2020-08-31 09:35:00 100
#4 2020-08-31 10:05:00 1000
#5 2020-08-31 10:10:00 100
#6 2020-08-31 10:40:00 1000