我有一个每月运行的 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')
有没有办法让它自动进行,这样我就不必每次都手动将日期提前一个月?
最佳答案
我们可以使用 between
将“日期”转换为 Date
后类(class)
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"
关于r - 根据更改的日期范围自动子集 R 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65028991/