按非标准格式日期对 data.frame 的行进行子集/过滤

Subset / filter rows of a data.frame by non-standard formatted date

我有一个每小时 data.frame Data$date 列,从 2015 年到 2021 年。日期采用 "%d%m%Y HH:MM" 格式。

我需要删除特定日期的特定行,例如删除日期为“01/09/2021”的所有行。

我试过这个:

Data <- Data[as.Date(format(Data$date, "%d%m%Y")) != 01/09/2021, ]

但这没有用。正确的做法是什么?预先感谢您的帮助。

日期时间转换代码列在?strptime

as.Date returns 类型为 "2021-09-01" 和 class Date 的字符串(详见 ?Dates),所以这个正确的逻辑是:

Data <- data.frame(id = 1:2, date = c("01012021 00:00","01092021 00:00"))
Data
#>   id           date
#> 1  1 01012021 00:00
#> 2  2 01092021 00:00

Data[as.Date(Data$date, format = "%d%m%Y") != "2021-09-01", ]
#>   id           date
#> 1  1 01012021 00:00

请注意 "01/09/2021""2021-09-01" 等字符串 在 R 中被引用

reprex package (v2.0.1)

于 2021-09-21 创建

这有帮助吗?

您可以使用正则表达式方法删除以 '01092021'.

开头的行

使用来自@scrameri 的数据

result <- subset(Data, !grepl('^01092021', date))
result

#  id           date
#1  1 01012021 00:00