Як групувати дані за часом у 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *