Como agrupar dados por tempo em r (com exemplo)


Você pode usar a seguinte sintaxe para agrupar dados por tempo e realizar agregação em 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))

Este exemplo específico agrupa os valores por hora em uma coluna chamada Hora e depois calcula a soma dos valores da coluna Vendas para cada hora.

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: agrupar dados por tempo em R

Digamos que temos o seguinte quadro de dados que mostra o número de vendas realizadas em diferentes horários do dia em uma loja:

 #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

Podemos usar a seguinte sintaxe para agrupar a coluna de tempo por horas e calcular a soma das vendas de cada hora:

 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

Pelo resultado podemos ver:

  • Foram realizadas 38 vendas na primeira hora.
  • Um total de 29 vendas foram realizadas na segunda hora.
  • Um total de 10 vendas foram feitas na quarta hora.
  • Um total de 9 vendas foram realizadas durante a quinta hora.

Observe que também podemos realizar outra agregação.

Por exemplo, poderíamos calcular o número médio de vendas por hora:

 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

Pelo resultado podemos ver:

  • A média de vendas realizadas na primeira hora foi de 19 .
  • A média de vendas realizadas na segunda hora foi de 14,5 .
  • A média de vendas realizadas na quarta hora foi de 10 .
  • A média de vendas realizadas na quinta hora foi de 9 .

Sinta-se à vontade para agrupar seu próprio quadro de dados por tempo e calcular qualquer métrica específica desejada, modificando a métrica na função summary() .

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns em R:

Como agrupar dados por mês em R
Como agrupar dados por semana em R

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *