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

R-分析字符串中包含的几个日期

  •  1
  • MassCorr  · 技术社区  · 6 年前

    我正在寻找一种方法来解析包含在字符串中的任意格式的几个日期。

    my_date="6 May 2018 10$ party 2018-01-05 meeting"
    my_parser(my_date)
    # expected : c("2018-05-06 GMT","2018-01-05 GMT")
    

    分析日期 包可以分析任何日期格式,但仅当字符串只包含一个日期时。

    library(parsedate)
    parse_date("06 may 2018 10$ party",approx=T)
    #"2018-05-06 GMT"
    parse_date("06 may 2018 10$ party 2018-01-05 meeting",approx=T)
    #"2018-01-05 GMT"
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Nar    6 年前

    您可以将月份名称替换为月份编号,将字符串拆分为单词,并将分析日期应用于每个拆分的部分:

        library(parsedate)
        library(stringr)
    
        my_date="6 May 2018 10$ party 2018-01-05 meeting"
        month_list <- c("Jan","Feb","Mar","Apr","May","Jun", "Jul","Aug","Sep", "Oct","Nov","Dec")
    
        text <-my_date
         for (i in 1:12){
           text <-ifelse(grepl(month_list[i], text), gsub(month_list[i], i, text), text)
          }
    
        words <- str_split(text, " ")
        words[[1]][grepl("[A-Za-z]", words[[1]])] <-";"
        text <- paste(words[[1]], collapse = " ")
        str<- str_split(text, ";")
        dates<- lapply(str,parse_date)[[1]]
        dates <- dates[!is.na(dates)]