如何以编程方式过滤数据框最近日期的最近52周?

时间:2019-05-02 19:27:26

标签: r

我试图以编程方式从数据框中最完整的一周中筛选出过去52周中的数据框。最近的日期是'04 -21-2019'。该数据将每周加载一次,我试图避免手动过滤数据。

我知道有润滑剂。但是我不知道最近52周(以周为单位)哪个函数可以过滤我的数据。更好的解决方案会改为在365天进行过滤吗?

该表如下所示:

|---------------------|------------------|
|         Date (week) |     Product      |
|---------------------|------------------|
|      Apr 21, 19     |         A        |
|---------------------|------------------|
|      Apr 21, 19     |         B        |
|---------------------|------------------|
|      Apr 21, 19     |         C        |
|---------------------|------------------|
|      Apr 14, 19     |         A        |
|---------------------|------------------|
|      Apr 14, 19     |         B        |
|---------------------|------------------|
|      Apr 14, 19     |         C        |
|---------------------|------------------|

以此类推

理想的结果是可以为我提供最近52周可用数据的表格。

1 个答案:

答案 0 :(得分:2)

如您所说,您可以使用{lubridate}。
如果我能很好地理解您的问题,那么应该是您在寻找什么:

library(dplyr)
library(lubridate)

text_date <- '04-21-2019'
last_date <- mdy(text_date)
first_date <- last_date - weeks(52)

data <- tibble(
  date = c("04-21-2019", "01-21-2019", "08-21-2018", "04-21-2018"),
  product = LETTERS[1:4]
)

data %>% 
  mutate(date = mdy(date)) %>% 
  filter(date >= first_date, date <= last_date)

请问您关于SO的下一个问题,能否提供一个可复制的示例以及一个可用的数据框。