如何使用 dplyr 按日期过滤
您可以使用以下方法通过dplyr包在 R 中按日期过滤数据框:
方法 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:过滤日期之后的行
我们可以使用以下代码来过滤数据框中日期在 01/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
生成的数据框中的每一行都有一个 2022 年 1 月 25 日之后的日期。
示例 2:过滤日期之前的行
我们可以使用以下代码来过滤数据框中日期在 01/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
生成的数据框中的每一行的日期都在 01/25/2022 之前。
示例 3:过滤两个日期之间的行
我们可以使用以下代码来过滤数据框中日期在 01/20/2022 和 02/20/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
生成的数据框中的每一行的日期都在 01/20/2022 和 02/20/2022 之间。
注意#1 :如果上述任何方法不起作用,您可能需要首先使用as.Date( function )将正在使用的日期转换为可识别的日期格式。
注意#2 :您可以在 dplyr中找到过滤器函数的完整文档。
其他资源
以下教程解释了如何在 dplyr 中执行其他常见操作:
如何使用 dplyr 过滤包含特定字符串的行
如何使用 dplyr 按多个条件进行过滤
如何在 dplyr 中使用“不包含”过滤器