首页 > 解决方案 > R - 解析字符串中包含的多个日期

问题描述

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

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")

parsedate包能够解析任何日期格式,但前提是字符串仅包含一个日期。

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"

标签: rdateparsing

解决方案


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

    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)]

推荐阅读