Подмножество, если строка содержит - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть вектор строк. Некоторые элементы вектора (строки) содержат sp z o.o., что является аббревиатурой от "spółka z ograniczoną odpowiedzialnością".

first sp.z.o.o.
second s.a          #should be removed
kpt spółka z ograniczoną odpowiedzialnością #should be removed, it is not acronym
third sp z o o 
fourth PP           #should be removed
fifth sp z o.o.
przedszkole niepubliczne im.janusza korczaka #should be removed
sixth               #should be removed
seventh sp z oo 
eighth LTD.         #should be removed
nineth sp-z-o-o
tenth spzoo
sklep spożywczy na górnych adam kłaptocz #should be removed
elita sp.c. zofia szatkowska, tomasz szatkowski #should be removed
eleventh sp.zo.o
towarzystwo przyjaciół chorych "sądeckie hospicjum" #should be removed

Я хочу подмножество только тех, которые содержат все возможные комбинации sp z o.o. с пробелами и без пробелов / двойных пробелов, точек, запятых и других символов (таких как * | - et c.) , Для этого я попытался использовать код ниже, но он не работает. sample <- df[grepl("(sp\\.z\\.o\\.o\\.)", df$col_1), ] а также sample <- df[grepl("(sp\\.*z\\.*o\\.*o\\.*)", df$col_1), ] EDITED : Ронак Шах предложил: grep('s.*p.*z.*o', x, value = TRUE) Это работает, но возвращает строки, которые не должны быть подразделены, такие как: elita sp.c. zofia szatkowska, tomasz szatkowski "społem" powszechna spółdzielnia spożywców w myśliborzu

Я хочу поднастроить строки с различным изменением акронима sp z o.o., а также избегать всех строк, которые не содержат его

1 Ответ

1 голос
/ 12 апреля 2020

Мы можем использовать следующий шаблон:

sample <- subset(df, grepl('s.*p.*z.*o', col_1))

Это выберет строки, когда в строке будет spzoo, независимо от того, что находится между ними.

Мы можем проверить регулярное выражение на векторе.

x <- c('first sp.z.o.o.', 'second s.a', 'third sp z o o', 'fourth PP',
       'fifth sp z o.o.', 'sixth', 'seventh sp z oo', 'eighth LTD.', 
       'nineth sp-z-o-o', 'tenth spzoo', 'eleventh sp.zo.o')

grep('s.*p.*z.*o', x, value = TRUE)

#[1] "first sp.z.o.o."  "third sp z o o"   "fifth sp z o.o."  "seventh sp z oo" 
#[5] "nineth sp-z-o-o"  "tenth spzoo"      "eleventh sp.zo.o"

РЕДАКТИРОВАТЬ

Для обновленного набора данных мы можем использовать

sample <- subset(df, grepl('sp.?z.?o.?o', col_1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...