首页 > 解决方案 > R:日期提取的正则表达式

问题描述

我正在尝试使用 R 从 txt 文件中提取日期模式。我想我可以使用 str_extract 和正则表达式,但不能完全得到能够给我预期结果的正则表达式。

图案很喜欢

2016 年 1 月 21 日

2019 年 3 月 3 日

2013 年 4 月 15 日

等等。

我当前的设置是我将文本文件加载到 R 中并将其作为名为 mystring 的字符串变量,然后

    pattern <- "January|February|March|May|June|July|August|September|October|November|December\\s\\d{1,2},\\s\\d{4}"
    
    str_extract_all(mystring,pattern)

我认为我在正确的轨道上,但不能完全让它发挥作用。最终,我还想将提取的内容转换为默认的“2019-03-01”格式并将字符数据更改为日期,但我首先需要弄清楚如何提取数据。

标签: rregexdate

解决方案


为什么不使用lubridate'mdy()函数,它将字符串转换为您可以根据需要解析的日期?

mdy("January 21, 2016")

[1] "2016-01-21"

这是一个包含多个随机日期的示例:

random_dates <- format(sample(seq(as.Date('2018/01/01'), as.Date('2020/01/01'), by="day"), 12), "%B %d, %Y")

tidy_dates <- mdy(random_dates)

从:

 [1] "June 05, 2018"     "December 23, 2019" "October 20, 2019"  "July 17, 2019"     "February 26, 2019" "January 25, 2018" 
 [7] "August 16, 2018"   "February 08, 2019" "July 31, 2019"     "May 05, 2019"      "November 30, 2018" "March 28, 2018" 

至:

 [1] "2018-06-05" "2019-12-23" "2019-10-20" "2019-07-17" "2019-02-26" "2018-01-25" "2018-08-16" "2019-02-08" "2019-07-31" "2019-05-05"
[11] "2018-11-30" "2018-03-28"

推荐阅读