Фильтровать столбец даты, начиная с воскресенья - PullRequest
2 голосов
/ 20 апреля 2020

У меня есть фрейм данных со столбцом даты следующим образом:

library(tidyverse)

df <- data.frame(
                id = c(1, 2, 4, 65, 77, 5, 4),
              date = c("2020-04-18", "2020-04-20", "2020-04-01", "2020-04-19",
                       "2020-04-02", "2020-04-01", "2020-04-20")
      ) %>% mutate(date = as.Date(date))

Я хотел бы систематически фильтровать столбец даты с элементами, предшествующими последнему воскресенью.

Сегодня 2020-04-20, и это понедельник. Первое воскресенье - 2020-04-19

last_sunday <- as.Date(`2020-04-19`)

df %>% filter(date <= last_sunday)

  id       date
1  1 2020-04-18
2  4 2020-04-01
3 65 2020-04-19
4 77 2020-04-02
5  5 2020-04-01

Как программно определить переменную "last_sunday".

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

с использованием lubridate

previous_sunday <- lubridate::floor_date(Sys.Date(), "week")

previous_sunday
[1] "2020-04-19"

df %>% filter(date <= previous_sunday)
  id       date
1  1 2020-04-18
2  4 2020-04-01
3 65 2020-04-19
4 77 2020-04-02
5  5 2020-04-01
0 голосов
/ 20 апреля 2020

Один из вариантов может быть:

df %>%
 filter(date <= min(date[as.POSIXlt(date)$wday == 0]))

  id       date
1  1 2020-04-18
2  4 2020-04-01
3 65 2020-04-19
4 77 2020-04-02
5  5 2020-04-01
...