按 R 中未指定年份的日期条件过滤

Filter by a date condition with an unspecified year in R

我有一个包含“日期”列的数据框。格式为:“Y%-m%-d%”

> class(df$date)
[1] "character"

> head(df$date)
[1] "1989-03-01" "2002-03-24" "2021-04-02" "2004-02-01" "2020-03-26" "1996-04-06"

我想对我的数据框进行子集化,取出 [01-01;01-05](包括 1 月 1 日至 5 日)之间的所有日期无论年份,这就是给我带来麻烦的原因。

我该怎么做?非常感谢。

编辑:看来我可能表达不好。我想从数据集中删除 1 月 1 日至 5 日期间的数据。因此,为了保留每年剩下的时间,每年都会发生什么。

这是一个选项,我们采用 substring 排除年份部分,并使用 %in%

创建一个包含 01-0101-05 的逻辑向量
subset(df, !substring(date, 6) %in% sprintf("01-%02d", 1:5))

或者可以转换为 Date class 并提取 monthday 以创建逻辑

library(dplyr)
library(lubridate)
df %>%
   mutate(date = ymd(date)) %>%
   filter(month(date) == 1, day(date) > 5)

这是一个替代方法,转换为字符。

df[format(as.Date(df$date), "%m%d") > "0105",]