как сгенерировать специальные c периоды в течение сервальных дней в R - PullRequest
1 голос
/ 05 мая 2020

Я хочу генерировать один и тот же период в течение сервальных дней, например, с 09:30:00 до 16:00:00 каждый день, и я знаю, что

dates<- seq(as.POSIXct("2000-01-01 9:00",tz='UTC'), as.POSIXct("2000-04-9 16:00",tz='UTC'), by=300)

может помочь мне получить временной ряд наблюдается каждые 5 минут в течение 24 часов в 100 дней. Но я хочу, чтобы с 9:30:00 до 16:00:00 за 100 дней. Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

Вариант с использованием tidyr::crossing() (который мне нравится) и пакета lubridate:

crossing(c1 = paste(dmy("01/01/2000") + seq(1:100), "09:30"),
         c2 = seq(0, 390, 5)) %>%
  mutate(time_series = ymd_hm(c1) + minutes(c2)) %>%
  pull(time_series)
0 голосов
/ 05 мая 2020

Вот один способ. Мы можем создать последовательность дат для каждого дня, а затем создать подсписок с каждым днем ​​для пятиминутного интервала. Наконец, мы можем объединить этот список. final_seq - окончательный результат.

date_seq <- seq(as.Date("2000-01-01"), as.Date("2000-04-09"), by = 1)

hour_seq <- lapply(date_seq, function(x){
  temp_date <- as.character(x)
  temp_seq <- seq(as.POSIXct(paste(temp_date, "09:30"), tz = "UTC"),
                  as.POSIXct(paste(temp_date, "16:00"), tz = "UTC"),
                  by = 300)
})

final_seq <- do.call("c", hour_seq)
...