Как фильтровать по дате с помощью 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 января 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 января 2022 года.

Пример 2: фильтровать строки до даты

Мы можем использовать следующий код для фильтрации строк во фрейме данных, имеющих дату до 25 января 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 января 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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.