Как программно отфильтровать последние 52 недели по самой последней дате моего кадра данных? - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь программно отфильтровать мой фрейм данных за последние 52 недели с самой завершенной недели в моем фрейме данных.Самая последняя дата - «04-21-2019».Эти данные будут загружаться еженедельно, и я пытаюсь избежать фильтрации данных вручную.

Я знаю, что есть lubridate.Но я не знаю, какая функция будет фильтровать мои данные за последние 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 Ответ

2 голосов
/ 02 мая 2019

Как вы сказали, вы можете использовать {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, не могли бы вы привести воспроизводимый пример с пригодным для использования фреймом данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...