Как сгруппировать данные по времени в r (с примером)


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

 library (dplyr)
library (lubridate)

#group by hours in time column and calculate sum of sales
df %>%
  group_by(time=floor_date(time, ' 1 hour ')) %>%
  summarize(sum_sales=sum(sales))

В этом конкретном примере значения группируются по часам в столбец « Час» , а затем вычисляет сумму значений в столбце «Продажи» для каждого часа.

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: группировка данных по времени в R

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

 #create data frame
df <- data. frame (time=as. POSIXct (c('2022-01-01 01:14:00', '2022-01-01 01:24:15',
                                 '2022-01-01 02:52:19', '2022-01-01 02:54:00',
                                 '2022-01-01 04:05:10', '2022-01-01 05:35:09')),
                 sales=c(18, 20, 15, 14, 10, 9))

#view data frame
df

                 time sales
1 2022-01-01 01:14:00 18
2 2022-01-01 01:24:15 20
3 2022-01-01 02:52:19 15
4 2022-01-01 02:54:00 14
5 2022-01-01 04:05:10 10
6 2022-01-01 05:35:09 9

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

 library (dplyr)
library (lubridate)

#group by hours in time column and calculate sum of sales
df %>%
  group_by(time=floor_date(time, ' 1 hour ')) %>%
  summarize(sum_sales=sum(sales))

`summarise()` ungrouping output (override with `.groups` argument)
# A tibble: 4 x 2
  time sum_sales
                    
1 2022-01-01 01:00:00 38
2 2022-01-01 02:00:00 29
3 2022-01-01 04:00:00 10
4 2022-01-01 05:00:00 9

По результату мы видим:

  • Всего за первый час было совершено 38 продаж.
  • Всего за второй час было совершено 29 продаж.
  • Всего за четвертый час было совершено 10 продаж.
  • Всего за пятый час было совершено 9 продаж.

Обратите внимание, что мы также можем выполнить другую агрегацию.

Например, мы могли бы рассчитать среднее количество продаж в час:

 library (dplyr)
library (lubridate)

#group by hours in time column and calculate mean of sales
df %>%
  group_by(time=floor_date(time, ' 1 hour ')) %>%
  summarize(mean_sales=mean(sales))

`summarise()` ungrouping output (override with `.groups` argument)
# A tibble: 4 x 2
  time mean_sales
                     
1 2022-01-01 01:00:00 19  
2 2022-01-01 02:00:00 14.5
3 2022-01-01 04:00:00 10  
4 2022-01-01 05:00:00 9

По результату мы видим:

  • Среднее число продаж, совершенных за первый час, составило 19 .
  • Средний объем продаж, совершенных за второй час, составил 14,5 .
  • Средний объем продаж, совершенных за четвертый час, составил 10 .
  • Среднее число продаж, совершенных за пятый час, составило 9 .

Не стесняйтесь группировать свой собственный фрейм данных по времени и рассчитывать любую конкретную метрику, которую вы хотите, изменяя метрику в функции summary() .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в R:

Как сгруппировать данные по месяцам в R
Как сгруппировать данные по неделям в R

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *