Jak grupować dane według czasu w r (z przykładem)


Do grupowania danych według czasu i wykonywania agregacji w języku R można zastosować następującą składnię:

 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))

Ten konkretny przykład grupuje wartości według godzin w kolumnę o nazwie Godzina , a następnie oblicza sumę wartości w kolumnie Sprzedaż dla każdej godziny.

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: grupuj dane według czasu w R

Załóżmy, że mamy następującą ramkę danych, która pokazuje liczbę sprzedaży dokonanych w sklepie w różnych porach dnia:

 #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

Możemy zastosować następującą składnię, aby pogrupować kolumnę czasu według godzin i obliczyć sumę sprzedaży dla każdej godziny:

 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

Z wyniku możemy zobaczyć:

  • W ciągu pierwszej godziny dokonano łącznie 38 sprzedaży.
  • W ciągu drugiej godziny dokonano łącznie 29 sprzedaży.
  • W ciągu czwartej godziny dokonano łącznie 10 sprzedaży.
  • W ciągu piątej godziny dokonano łącznie 9 sprzedaży.

Należy pamiętać, że możemy wykonać także inną agregację.

Na przykład możemy obliczyć średnią liczbę sprzedaży na godzinę:

 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

Z wyniku możemy zobaczyć:

  • Średnia sprzedaż zrealizowana w ciągu pierwszej godziny wyniosła 19 .
  • Średnia sprzedaż zrealizowana w drugiej godzinie wyniosła 14,5 .
  • Średnia sprzedaż dokonana w czwartej godzinie wyniosła 10 .
  • Średnia sprzedaż dokonana w piątej godzinie wyniosła 9 .

Możesz pogrupować własną ramkę danych według czasu i obliczyć dowolną konkretną metrykę, modyfikując metrykę w funkcji podsumowania() .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w języku R:

Jak grupować dane według miesięcy w R
Jak grupować dane według tygodni w R

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *