按非标准格式日期对 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
我有一个每小时 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