我正尝试使用正则表达式将过滤器应用于矢量,以便以以下方式检索与日期和时间戳匹配的数据:“ 12/20/2018 6:08 PM”示例:
vec<-c("house", "1 house", house 1", "12/20/2018 6:08 PM", "12/21/2018 11:49 AM", "01/05/2019 11:21 AM")
我尝试了以下方法:
str_detect(vec, "^[1-9]{2}/[1-9]{2}/[1-9]{2} [1-9]{2}:[1-9]{2} [A,P,M]$")
但这与时间戳不符。
我将OP的正则表达式更改为以下内容:
library(stringr)
str_detect(vec, "^[01][0-9]/[0-3][0-9]/[0-9]{4}\\s1?[0-9]:[0-9]{2}\\s[AP]M$")
# [1] FALSE FALSE FALSE TRUE TRUE TRUE
或在基本R中:
grepl("^[01][0-9]/[0-3][0-9]/[0-9]{4}\\s1?[0-9]:[0-9]{2}\\s[AP]M$", vec)
# [1] FALSE FALSE FALSE TRUE TRUE TRUE
如果您的目标是最终将转换vec
为日期时间,我们可以直接使用进行转换as.POSIXct
:
datetime_vec <- as.POSIXct(vec, format = "%m/%d/%Y %I:%M %p")
# [1] NA NA NA
# [4] "2018-12-20 18:08:00 EST" "2018-12-21 11:49:00 EST" "2019-01-05 11:21:00 EST"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句