Назначить значение из следующей строки в R - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть данные, такие как Страна: Индия или Сингапур, где вы находитесь в данный момент.

Мне нужно присвоить "Индия или Сингапур" переменной стране. Я пытаюсь использовать

word(mytext[which(str_detect(mytext,"Country"))+1],1:3,sep = fixed(' '))

, но не могу назначить правильно. Страна и значение указаны в отдельных строках. Как изменить код, чтобы присвоить ему правильное значение?

1 Ответ

1 голос
/ 24 февраля 2020

Если вы планируете сопоставить весь текст после Country: / Country до следующей запятой, вы можете использовать

Country(?:\s*:)?\s*([^,]*)

См. Демонстрационную версию regex

Если вы точно знаете, что все, что вам нужно, это 3 слова после Country, используйте

Country(?:\s*:)?\s*([\w'-]+(?:\s+[\w'-]+){2})

См. это демонстрационное выражение regex .

В R используйте stringr::str_match:

stringr::str_match(text, "Country(?:\\s*:)?\\s*([^,]*)")[,2]
stringr::str_match(text, "Country(?:\\s*:)?\\s*([\\w'-]+(?:\\s+[\\w'-]+){2})")[,2]

Детали шаблона

  • Country - буквенная строка
  • (?:\s*:)? - необязательная последовательность из 0+ пробелов и затем двоеточия
  • \s* - 0+ пробелов
  • ([^,]*) - Захват группы № 1, соответствующей 0 или более символам кроме запятой.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...