r - 如果字符串包含子集
问题描述
我有字符串向量。向量(字符串)的一些元素包含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.
带和不带空格/双空格、点、逗号和其他符号(例如 * | - 等)的所有可能组合的子集。为此,我尝试使用下面的代码,但它不起作用。
sample <- df[grepl("(sp\\.z\\.o\\.o\\.)", df$col_1), ]
并且已
sample <- df[grepl("(sp\\.*z\\.*o\\.*o\\.*)", df$col_1), ]
编辑:
Ronak Shah建议:
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.
并避免所有不包含它的字符串
解决方案
我们可以使用以下模式:
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))
推荐阅读
- arrays - SQL Server 使用 XMLQUERY 解析 XML 节点数组
- javascript - 与 useEffect 一起使用时,React Hook useRef 为 null
- javascript - 滑块不会关闭
- python - serverless-offline 不能同时运行 Node 和 Python 运行时
- python - Pandas 索引与时间值匹配
- java - 无法比较不同时区的字符串日期
- r - 运行代码 1000 次并将其保存在 R 向量中
- swift - 协议触发时未调用 ObservedObject 类函数
- sequelize.js - 我可以直接在 Nestjs 控制器中访问续集模型吗?
- apache-nifi - 是否可以在 nifi 中每 5 分钟从 Web 服务获取详细信息