Как фильтровать по дате с помощью dplyr


Вы можете использовать следующие методы для фильтрации кадра данных по датам в R с помощью пакета dplyr :

Способ 1: фильтрация строк после даты

 df %>% filter(date_column > ' 2022-01-01 ')

Способ 2: фильтрация строк до даты

 df %>% filter(date_column < ' 2022-01-01 ') 

Способ 3. Фильтрация строк между двумя датами

 df %>% filter(between(date_column, as. Date (' 2022-01-20 '), as. Date (' 2022-02-20 ')))

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

 #create data frame
df <- data. frame (day=seq( as.Date (' 2022-01-01 '), by = ' week ', length.out = 10 ),
                 sales=c(40, 35, 39, 44, 48, 51, 23, 29, 60, 65))

#view data frame
df

          day sales
1 2022-01-01 40
2 2022-01-08 35
3 2022-01-15 39
4 2022-01-22 44
5 2022-01-29 48
6 2022-02-05 51
7 2022-02-12 23
8 2022-02-19 29
9 2022-02-26 60
10 2022-03-05 65

Пример 1. Фильтрация строк после даты

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

 library (dplyr)

#filter for rows with date after 1/25/2022
df %>% filter(day > ' 2022-01-25 ')

         day sales
1 2022-01-29 48
2 2022-02-05 51
3 2022-02-12 23
4 2022-02-19 29
5 2022-02-26 60
6 2022-03-05 65

Каждая из строк в результирующем фрейме данных имеет дату после 25.01.2022.

Пример 2. Фильтрация строк до даты

Мы можем использовать следующий код для фильтрации строк из фрейма данных, дата которых раньше 25.01.2022:

 library (dplyr)

#filter for rows with date before 1/25/2022
df %>% filter(day < ' 2022-01-25 ')

         day sales
1 2022-01-01 40
2 2022-01-08 35
3 2022-01-15 39
4 2022-01-22 44

Каждая из строк в результирующем фрейме данных имеет дату до 25.01.2022.

Пример 3. Фильтрация строк между двумя датами

Мы можем использовать следующий код для фильтрации строк из фрейма данных, дата которых находится между 20.01.2022 и 20.02.2022:

 library (dplyr)

#filter for rows with dates between 1/20/2022 and 2/20/2022
df %>% filter(between(date_column, as. Date (' 2022-01-20 '), as. Date (' 2022-02-20 '))) 

         day sales
1 2022-01-22 44
2 2022-01-29 48
3 2022-02-05 51
4 2022-02-12 23
5 2022-02-19 29

В каждой строке результирующего фрейма данных указана дата между 20.01.2022 и 20.02.2022.

Примечание № 1. Если какой-либо из вышеперечисленных методов не работает, возможно, вам придется сначала преобразовать даты, с которыми вы работаете, в узнаваемый формат даты, используя функцию as.Date( ) .

Примечание №2 : Полную документацию по функции фильтра в dplyr можно найти здесь .

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

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

Как фильтровать строки, содержащие определенную строку, с помощью dplyr
Как фильтровать по нескольким условиям с помощью dplyr
Как использовать фильтр «не включено» в dplyr

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

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