Есть ли функция для создания минимального или максимального времени для символа «время», отформатированного в 00:00:00 - PullRequest
1 голос
/ 20 февраля 2020

Я работаю с тибблом, содержащим данные колл-центра, и, по сути, я пытаюсь определить, сколько звонков поступает в течение нескольких часов с 15-минутными интервалами, начиная с 7:00 до 19:00. Мой набор данных выглядит как-то ниже.

В конце концов, я знаю, что могу составить группу и подвести итоги, но как мне указать Время контакта в числе этажей или потолков?

Пример: что-нибудь между 08:00:00 и 08 : 10:00 будет 08:00:00, что-нибудь между 08:10:01 и 08:20:00 будет 08:15:00, а что-нибудь между 08:20:01 и 08:30:00 будет 08 : 30:00 и так далее, и так далее.

tbl <- tibble(ContactDate = "2019-11-01", ContactTime = "08:11:41", Month = "Nov", Day = "Friday", ConnectTimeSecs = "216", QueueTimeSecs = "31", TalkTimeSecs = "110")

1 Ответ

1 голос
/ 20 февраля 2020

Вы, вероятно, хотите это:

library(lubridate)
library(dplyr)

tbl %>%
    mutate(contactDateTime = ymd_hms(paste(ContactDate, ContactTime))) %>%
    mutate(contactDateTime = floor_date(contactDateTime, unit = "15minutes"))

Вывод:

  ContactDate ContactTime Month Day    ConnectTimeSecs QueueTimeSecs TalkTimeSecs contactDateTime    
  <chr>       <chr>       <chr> <chr>  <chr>           <chr>         <chr>        <dttm>             
1 2019-11-01  08:11:41    Nov   Friday 216             31            110          2019-11-01 08:00:00

Хорошо, и если вы затем хотите агрегировать за 15-минутные интервалы, добавьте это:

tbl %>%
    mutate(contactDateTime = ymd_hms(paste(ContactDate, ContactTime))) %>%
    mutate(contactDateTime = floor_date(contactDateTime, unit = "15minutes")) %>%
    group_by(contactDateTime) %>%
    summarise(numberOfCalls = n())

и вы получите это:

  contactDateTime     numberOfCalls
  <dttm>                      <int>
1 2019-11-01 08:00:00             1
...