r - 根据更改的日期范围自动子集 R 数据框

标签 r date subset

我有一个每月运行的 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/

相关文章:

php - 存储并显示用户的注册日期

javascript - 如何将日期从一个日期输入设置为另一日期输入?

java - 在java中查找子集

python - 如何从列表数组中删除所有重复列表和属于其他列表子集的列表?

r - 如何使用 R 中的 forestplot 包将 forestplot 中的行挤在一起

regex - R 中的 gsub 跨多行(dotall)

java - 在 Java 中将带毫秒的字符串转换为日期格式

java - 这些子集的排列顺序是什么?

R 将列的值作为从数组中选择列的值

r - 算术运算符后管道的不同输出与直接调用它