首页 > 解决方案 > 根据更改的日期范围自动设置 R 数据框

问题描述

我有一个每月运行的 R 脚本。我想将我的数据框子集化为仅显示 6 个月时间段内的数据,但每个月我都希望时间段向前移动一个月。

9月的原始数据框:

ID  Name  Date
1   John  1/1/2020
2   Adam  5/2/2020
3   Kate  9/30/2020
4   Jill  10/15/2020

仅对 2020 年 5 月 1 日至 2020 年 9 月 30 日的日期进行子集化后:

ID  Name  Date
2   Adam  5/2/2020
3   Kate  9/30/2020

下个月运行我的脚本时,我希望它的子集日期提前一个月,所以 2020 年 6 月 1 日 - 2020 年 10 月 31 日:

ID  Name  Date
3   Kate  9/30/2020
4   Jill  10/15/2020

现在,我每个月都会手动更改这部分脚本,即:

df$Date >= subset(df$Date >= '2020-05-01' & df$date <= '2020-09-30')

有没有办法让它自动化,这样我就不必每次都手动将日期向前移动一个月?

标签: rdatesubset

解决方案


我们可以between在将“日期”转换为Date类后使用

library(dplyr)
library(lubridate)
start <- as.Date("2020-05-01")
end <- as.Date("2020-09-30")

df1 %>%
    mutate(Date = mdy(Date)) %>%
    filter(between(Date, start, end))
#  ID Name       Date
#1  2 Adam 2020-05-02
#2  3 Kate 2020-09-30

在下个月,我们可以通过添加 1 个月来更改“开始”、“结束”

start <- start %m+% months(1)
end <-  ceiling_date(end %m+% months(1), 'months') - days(1)

start
#[1] "2020-06-01"
end
#[1] "2020-10-31"

推荐阅读