字符串模式匹配,用于检查R中的日期格式

时间:2018-08-06 16:48:06

标签: r pattern-matching

我正在尝试使用字符串模式匹配来查找日期变量中的任何错字。

日期的所选格式为dd-mm-yyyy。

我的尝试没有用,因为它们无法区分不同类型的标点符号,而且我得到的行具有所需的格式而不是错字。

谢谢!

# Data
df <- data.frame(EntryVar=c(1:7), DateVar=c("01-01-1938","1-01-1938","12-6-1939","12-06-193","12/06-1938","12.06-1938","12/06/1938"))
df$DateVar <- as.character(df$DateVar)

# Goal
dfgoal <- df[2:7, ]

# My attempts 
grep("[0-9]{2}[[:punct:]][0-9]{2}[[:punct:]][0-9]{4}", df$DateVar, value = TRUE)
df[!grep("[0-9]{2}[[:punct:]][0-9]{2}[[:punct:]][0-9]{4}",df$DateVar,value = TRUE)]

2 个答案:

答案 0 :(得分:0)

您可以尝试

df[!grepl("[0-9]{2}-[0-9]{2}-[0-9]{4}",df$DateVar),]

答案 1 :(得分:0)

您可以使用invert选项来否定模式,仅获得不匹配的行:

df[grep("[0-9]{2}[[:punct:]][0-9]{2}[[:punct:]][0-9]{4}",df$DateVar,invert = TRUE),]