Создать серию временных данных в R - PullRequest
0 голосов
/ 26 сентября 2018

Если у меня есть такие данные:

x y Z Frequency(minutes) start_time End_time
1 2 1    7                00:06:00   06:21:00

и я хочу преобразовать их в этот формат, как это сделать в R?

x y Z Frequency(minutes) start_time End_time  New_time
1 2 1      7             06:00:00   06:21:00  06:07:00
1 2 1      7             06:00:00   06:21:00  06:14:00
1 2 1      7             06:00:00   06:21:00  06:21:00

1 Ответ

0 голосов
/ 27 сентября 2018

Вот подход:

#  First pull in data
df <- read.table(header = T, text = "
                 x y z frequency_min start_time end_time
1 2 1    7                06:00:00   06:21:00") %>%

  # Reformat timestamps
  mutate(start_time2 = lubridate::ymd_hms(paste(Sys.Date(), start_time)),
         end_time2 = lubridate::ymd_hms(paste(Sys.Date(), end_time))) %>%

  # Figure out how many rows needed of each
  mutate(copies = (end_time2 - start_time2) / 
           lubridate::dminutes(1) / frequency_min) %>%

  # Make this many copies
  uncount(copies, .id = "copy_id") %>%

  # Add requested 'new_time' column
  mutate(new_time = start_time2 + frequency_min * copy_id * dminutes(1))
...