Как извлечь указанные c значений данных из предложений в R? - PullRequest
0 голосов
/ 03 апреля 2020

Я довольно плохо знаком с R и пытаюсь извлечь конкретные c числовые значения из предложений. Предложения разделены в фрейме данных и являются описаниями игр в футболе, которые описывают пьесы «пунт». Описания пьес в значительной степени единообразно структурированы и выглядят примерно так ... »(15:00) (формирование Пунта) Д. Сепульведа пробивает 45 ярдов в ТЕН-32, Центр-Г. Уоррен. C. 5 ярдов (А.Харрисон). "

Я хочу извлечь метры возврата, которые в этом примере - «5». Я уверен, что есть код для извлечения значения, следующего за «для», так как это единственное «для» во всех описаниях и как в вышеприведенном примере «5» следует «для», но я не могу найти что-либо для это.

Спасибо за любую помощь и, пожалуйста, дайте мне знать, если что-то нужно объяснить.

Ответы [ 2 ]

4 голосов
/ 03 апреля 2020

Мы можем использовать функцию str_extract_all пакета stringr. В этом примере извлекаются все числа, которые сразу после строки " yards". Это называется lookahead.

library(stringr)
string <- "(15:00) (Punt formation) D.Sepulveda punts 45 yards to TEN 32, Center-G.Warren. C.Finnegan to TEN 37 for 5 yards (A.Harrison)."
str_extract_all(string = string, pattern = "[0-9]+(?= yards)")
#[[1]]
#[1] "45" "5"

Если бы мы хотели только число, следующее за "for ", мы могли бы также использовать lookbehind.

str_extract_all(string = string, pattern = "(?<=for )[0-9]+(?= yards)")
#[[1]]
#[1] "5"
1 голос
/ 03 апреля 2020

В базе R мы можем использовать sub для извлечения числа после "for".

string <- "(15:00) (Punt formation) D.Sepulveda punts 45 yards to TEN 32, Center-G.Warren. C.Finnegan to TEN 37 for 5 yards (A.Harrison)."
sub('.*for (\\d+).*', '\\1', string)
#[1] "5"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...