代码之家  ›  专栏  ›  技术社区  ›  LLL

在R中检查日期格式的字符串模式匹配

  •  1
  • LLL  · 技术社区  · 7 年前

    我试图使用字符串模式匹配来查找日期变量中的任何拼写错误。

    日期的选定格式为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 回复  |  直到 7 年前
        1
  •  0
  •   A. Suliman    7 年前

    你可以试试

    df[!grepl("[0-9]{2}-[0-9]{2}-[0-9]{4}",df$DateVar),]
    
        2
  •  0
  •   Neal Fultz    7 年前

    你可以使用 invert 选项以否定模式并仅获取不匹配的行:

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