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


Вы можете использовать функцию strftime() в базе R с аргументом « %V » для группировки данных по неделям в R.

Эта функция использует следующий базовый синтаксис:

 df$week_num <- strftime(df$date, format = " %V ")

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

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

Предположим, у нас есть следующий фрейм данных в R, который показывает общий объем продаж товара в разные даты:

 #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

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

 #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

Примечание . Согласно документации, %V% вычисляет числа дат следующим образом: «номер недели года (понедельник как первый день недели) в десятичном формате [01,53]». Если на неделе, содержащей 1 января, в новом году четыре или более дней, то она считается неделей 1. В противном случае это последняя неделя предыдущего года, а следующая неделя — неделя 1».

Создав новый столбец, мы можем сгруппировать значения по номеру недели.

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

 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

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

  • Сумма продаж за первую неделю составила 22 .
  • Сумма продаж за 6 неделю составила 22 .
  • Сумма продаж за 7 неделю составила 23 .

И так далее.

Мы также можем использовать другую метрику для агрегирования данных.

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

 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

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

  • Средний объем продаж за первую неделю составил 11 .
  • Средний объем продаж за 6-ю неделю составил 22 .
  • Средний объем продаж за 7 неделю составил 23 .

И так далее.

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

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

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

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

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