Como agrupar dados por semana em r (com exemplo)
Você pode usar a função strftime() na base R com o argumento “ %V ” para agrupar dados por semana em R.
Esta função usa a seguinte sintaxe básica:
df$week_num <- strftime(df$date, format = " %V ")
O exemplo a seguir mostra como usar esta função na prática.
Exemplo: agrupar dados por semana em R
Suponha que temos o seguinte quadro de dados em R que mostra o total de vendas de um item em datas diferentes:
#create data frame df <- data. frame (date=as. Date (c('1/8/2022', '1/9/2022', '2/10/2022', '2/15/2022', '3/5/2022', '3/22/2022', '3/27/2022'), '%m/%d/%Y'), sales=c(8, 14, 22, 23, 16, 17, 23)) #view data frame df dirty date 1 2022-01-08 8 2 2022-01-09 14 3 2022-02-10 22 4 2022-02-15 23 5 2022-03-05 16 6 2022-03-22 17 7 2022-03-27 23
Podemos usar o código a seguir para adicionar uma coluna que exiba o número da semana de cada data:
#add column to show week number
df$week_num <- strftime(df$date, format = " %V ")
#view updated data frame
df
date sales week_num
1 2022-01-08 8 01
2 2022-01-09 14 01
3 2022-02-10 22 06
4 2022-02-15 23 07
5 2022-03-05 16 09
6 2022-03-22 17 12
7 2022-03-27 23 12
Nota : De acordo com a documentação, é assim que %V% calcula os números das datas: “o número da semana do ano (segunda-feira como o primeiro dia da semana) como um decimal [01,53].” Se a semana que contém 1º de janeiro tiver quatro ou mais dias no ano novo, será considerada a semana 1. Caso contrário, será a última semana do ano anterior e a semana seguinte será a semana 1.
Depois de criarmos esta nova coluna, podemos agrupar os valores com base no número da semana.
Por exemplo, podemos usar o seguinte código para calcular a soma das vendas, agrupadas por semana:
library (dplyr)
#calculate sum of sales, grouped by week
df %>%
group_by(week_num) %>%
summarize(total_sales = sum(sales))
# A tibble: 6 x 2
week_num total_sales
1 01 22
2 06 22
3 07 23
4 09 16
5 12 40
Pelo resultado podemos ver:
- A soma das vendas na semana 1 foi 22 .
- A soma das vendas na semana 6 foi 22 .
- A soma das vendas na semana 7 foi 23 .
E assim por diante.
Também podemos usar outra métrica para agregar os dados.
Por exemplo, podemos usar o seguinte código para calcular as vendas médias, agrupadas por semana:
library (dplyr)
#calculate mean of sales, grouped by week
df %>%
group_by(week_num) %>%
summarize(mean_sales = mean(sales))
# A tibble: 5 x 2
week_num mean_sales
1 01 11
2 06 22
3 07 23
4 09 16
5 12 20
Pelo resultado podemos ver:
- A média de vendas na semana 1 foi de 11 .
- A média de vendas na semana 6 foi de 22 .
- A média de vendas na semana 7 foi de 23 .
E assim por diante.
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns em R:
Como agrupar dados por mês emR
Como extrair o ano da data em R
Como extrair mês da data em R
Como classificar um quadro de dados por data em R