Мутируйте каждый день и каждый час, используя функции Tidyverse в R - PullRequest
0 голосов
/ 04 января 2019

В настоящее время у меня есть код, который возвращает каждый всплеск событий, которые происходят каждый день, используя следующее:

online_toy_purchases %>%
mutate(interval = lubridate::date(date)) %>%
group_by(interval) %>%
summarise(count = n())

В настоящее время возвращается следующее:

# A tibble: 31 x 2
interval    count
2018-12-01    500
2018-12-02    300
2018-12-03    400
2018-12-04    200
2018-12-05    600
...
2018-12-31    100

Мне нужен мой кодсгруппировать по каждому часу и каждому дню для более детального просмотра данных, который будет возвращать следующее:

# A tibble: 744  x 2
interval             count
2018-12-01 01:00:00    50    
2018-12-01 02:00:00    60  
2018-12-01 03:00:00    20  
2018-12-01 04:00:00    80  
...
2018-12-31 24:00:00    10 

online_toy_purchases - это тиббл, который содержит, среди других функций,Идентификатор транзакции и отметка времени, содержащая дату и час, минуту и ​​секунду покупки (т. Е. -> «2018-12-01 01:20:58»)

1 Ответ

0 голосов
/ 04 января 2019

Это будет подсчитывать количество строк в каждом часе данных.

library(tidyverse)
online_toy_purchases %>%
  # assuming that "date" is formatted as a datetime variable already
  count(time = lubridate::floor_date(date, "1 hour")) %>%

  # additional step using padr::pad to add missing hours and
  #   tidyr::replace_na to make NAs into zeroes
  padr::pad() %>%
  replace_na(list(n=0))

Для визуализации и дальнейшего анализа будет полезно иметь периоды записи строк без данных.В качестве альтернативы вы можете сделать что-то подобное, преобразовав в tsibble.

...