Как заменить _A _ & _ B_, используя gsub в R - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь объединить два столбца, содержащие названия компаний из двух разных таблиц данных на R. В одном столбце у меня есть шаблон _A_&_B_, где A и B могут быть любыми буквами. Я хотел бы избавиться от этих двух букв, то есть буквы длины 1, окруженной _

Так что, если у меня есть John_K_&_E_Scott, я бы хотел иметь John__&__Scott, так как я могу удалить пунктуацию. Я попробовал ниже

names[, JOINING_ID := gsub("[A-Za-z]_&_[A-Za-z]\\w", "", JOINING_ID)] 

Но это превращает John_A_&_ BOYS_ в John__&_ OYS_, что не то, что я хочу.

1 Ответ

0 голосов
/ 17 мая 2018

Используйте следующий шаблон регулярных выражений:

_[[:alpha:]]_&_[[:alpha:]]_

и заменить на __&__. См. демонстрационное выражение . Он не будет соответствовать строкам типа John_A_&_BOYS_ и, следовательно, не будет проблем, подобных той, что у вас есть.

Обратите внимание, что [[:alpha:]] соответствует любой букве.

R использование:

gsub("_[[:alpha:]]_&_[[:alpha:]]_", "__&__", JOINING_ID)

Или, если вы ожидаете только 1 совпадение на строку, используйте sub:

sub("_[[:alpha:]]_&_[[:alpha:]]_", "__&__", JOINING_ID)
...