首页 > 解决方案 > 使用 dplyr 按周过滤的功能

问题描述

我有一个关于周选择自动化的问题。我目前使用

dat %>%
  filter(week >= 33) %>%
ggplot(aes(date,transaction,group = 1)) +
  geom_line()

有没有办法创建一个函数,该函数需要一天并从周字段中减去两个以自动填充前两周?伪代码:

If
today() = week 35
then "week" == 35 - 2

dat %>%
  filter(week >= "week" ) %>%
  ggplot(aes(date,transaction,group = 1)) +
  geom_line()

标签: rdplyr

解决方案


我们可以Sys.Date()用来获取今天的日期,从中提取周数和filter过去 2 周的数据。

library(dplyr)
library(ggplot2)
todays_week <- lubridate::week(Sys.Date())

dat %>%
  filter(between(week, todays_week - 2, todays_week)) %>%
  ggplot(aes(date,transaction,group = 1)) +
  geom_line()

推荐阅读