Как я могу сгруппировать значения по часам и подсчитать кумулятивные итоги в других столбцах - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть кадр данных, который агрегируется за минуту (где одна строка представляет одну минуту в формате YYYY-MM-DD HH:MM:SS).

Я хочу сгруппировать каждое минутное значение в соответствующие значения часов / бинов.

Я также извлек значение часа из поля даты в другой столбец, чтобы упростить группировку данных (YYYY-MM-DD HH).

Я рассмотрел несколько подходов / ответов, в которых люди рекомендуют использовать lubridate / dplyr / anytime, но, похоже, ни один подход не сработал полностью для меня.

Мой фрейм данных:

> df

  date                hour                 available busy
1 2018-03-01 01:00:00 2018-03-01 01:00:00  1         1
2 2018-03-01 01:01:00 2018-03-01 01:00:00  1         1
3 2018-03-01 01:02:00 2018-03-01 01:00:00  1         1
4 2018-03-01 01:03:00 2018-03-01 01:00:00  1         1
5 2018-03-01 01:04:00 2018-03-01 01:00:00  1         1
6 2018-03-01 01:05:00 2018-03-01 01:00:00  1         1
...
7907 2018-03-14 00:54:00 2018-03-14        1         0
7908 2018-03-14 00:55:00 2018-03-14        1         0
7909 2018-03-14 00:56:00 2018-03-14        2         0
7910 2018-03-14 00:57:00 2018-03-14        1         0
7911 2018-03-14 00:58:00 2018-03-14        1         0
7912 2018-03-14 00:59:00 2018-03-14        1         0

Я хочу сгруппировать все по hour для каждой даты (я не против, если я использую столбец hour или значения сгруппированы по значению HH в столбце date) и список совокупное число available и busy для каждой часовой группы.

Мой желаемый выходной df будет выглядеть так (обратите внимание, что это фиктивные значения, а не фактические значения) :

  date                    available busy
1 2018-03-01 01:00:00     1         6   
2 2018-03-01 02:00:00     2         11  
3 2018-03-01 03:00:00     10        8 
...
450 2018-03-14 08:00:00   11        1 
451 2018-03-14 09:00:00   24        19
452 2018-03-14 10:00:00   12        4

1 Ответ

0 голосов
/ 29 апреля 2018

Это пример данных:

enter image description here

Вот код dplyr, чтобы сделать это:

library(lubridate)
df2 <- df %>% 
  group_by(hour) %>%
  summarize(
    available = sum(available),
    busy = sum(available)
  ) %>%
  ungroup()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...