在过去两个月中对 R 中的数据框进行子集化

r_a*_*r_a 0 r dataframe dplyr

嗨,我有一个数据框,例如:

Order Number    Date
4378345         2020-01-02
4324375         2020-02-03
Run Code Online (Sandbox Code Playgroud)

现在,我只想将此 Dataframe 子集化为日期大于今天日期过去 2 个月的订单,这样当我将其自动化时,它会自动使用过去两个月至今的代码。

任何帮助,将不胜感激。

编辑:我很抱歉,我想我应该更清楚,因为到最后两个月我的意思是,如果日期是今天 2020-03-16,我希望我的数据是从 2020-02-01 至今

Gre*_*gor 5

library(lubridate)
subset(your_data, Date > today() - months(2))
Run Code Online (Sandbox Code Playgroud)

这假设您的日期列已经属于类别Date

一般来说,月份并不是非常明确的......您可能想要使用更具确定性的标准。例如,4月28日、4月29日、4月30日、5月1日之前2个月是多少?请记住,今年 2 月有 29 天。您可以lubridate通过查看 的意见(as.Date("2020-04-28") + 0:3) - months(2),这是NA2020-04-30 的情况。在 ( ) 或其他一些更明确的标准之前进行 60 天Date > today() - days(60)将使您更加一致。


要从上个月的第一天开始,请使用以下代码。这是明确定义的,因为所有月份都有第一天。

subset(your_data, Date >= floor_date(today(), unit = "month") - months(1))
Run Code Online (Sandbox Code Playgroud)