Как извлечь дату из текста

Я пытался извлечь дату из следующего текста. К сожалению, это продолжает давать мне предупреждение, и результат NA

У меня есть следующий текст:

"IRA-401K Investment Assets Under Management (AUM)  As of July 31, 2018 BMG Funds  
$217,743,573 BMG BullionBars  $45,176,561 TOTAL  $262,920,134 Physical Holdings Download 
Scotiabank BMG BullionBars List Download Brinks BMG BullionBars List Holdings by Ounces As 
of July 31, 2018  Gold Bars 21,132.496 Silver Bars 453,531.574 Silver Coins 
80,500 Platinum Bars"

Текст содержит следующую дату: 31 июля 2018 года. Эти даты появляются в тексте дважды.

Я использовал следующий код, чтобы извлечь даты из текста.

test_take <- lapply(cleanurl_text, parse_date_time, orders = "mdy", 
             locale = Sys.setlocale('LC_TIME', locale = "English_Canada.1252"))

Я получаю следующее сообщение об ошибке:

Предупреждение: все форматы не удалось проанализировать. Форматы не найдены.

Когда я включаю точное = ИСТИНА

test_take <- lapply(as.character(cleanurl_text), parse_date_time, orders = "mdy", 
       locale = Sys.setlocale('LC_TIME', locale = "English_Canada.1252"), exact = TRUE)

Я получаю следующее предупреждение:

Предупреждающее сообщение: 1 не удалось проанализировать.

Полученный объект все еще содержит NA,

1 ответ

Решение

Следующее регулярное выражение может извлечь дату в опубликованном формате.

pattern <- paste(month.name, collapse = "|")
pattern <- paste0("(", pattern, ")\\s\\d{1,2}.{1,2}\\d{4}")

m <- gregexpr(pattern, cleanurl_text)
regmatches(cleanurl_text, m)
#[[1]]
#[1] "July 31, 2018" "July 31, 2018"

Обратите внимание, что это можно сделать всего за одну строку кода, regmatches(gregexpr(.)), но я выбрал две строки, чтобы сделать его более читабельным.

Другие вопросы по тегам