根据日期列过滤数据框中的行

时间:2016-06-27 06:25:25

标签: r datetime dataframe dplyr

我有以下数据框:

id        day           total_amount
 1       2016-06-09         1000
 1       2016-06-23          100
 1       2016-06-24          200
 1       2015-11-27         2392
 1       2015-12-16          123
 7       2015-07-09          200
 7       2015-07-09         1000
 7       2015-08-27       100018
 7       2015-11-25         1000

如何使用基本R软件包和其他软件包(如dplyr)丢弃日期列早于三周的行。

2 个答案:

答案 0 :(得分:3)

我们可以使用subset

 subset(df1, as.Date(day) > Sys.Date()-21)

答案 1 :(得分:2)

只是填补两个额外的可能性(在语法方面几乎相同,与@ akrun使用subset非常相似)。

您可以按如下方式使用with来缩短字符数:

with(df, df[as.Date(day) > Sys.Date()-21,])

正如您所提到的,希望看到其他软件包,这是使用data.table软件包丢弃旧观察结果的一种方法。

library(data.table)
# turn df into a data.table
setDT(df)

df[as.Date(day) > Sys.Date()-21,]

数据

df <- read.table(header=T, text="id        day           total_amount
 1       2016-06-09         1000
 1       2016-06-23          100
 1       2016-06-24          200
 1       2015-11-27         2392
 1       2015-12-16          123
 7       2015-07-09          200
 7       2015-07-09         1000
 7       2015-08-27       100018
 7       2015-11-25         1000")