如何从R中的一列字符串中删除字符串向量?

时间:2018-04-09 13:49:54

标签: r regex replace gsub string-substitution

我有一列公司名称     db_name$name

我找到了100个最常见的结局(Inc,Ltd,GmbH,Co等),并将它们连接起来,使它们更容易使用正则表达式。

`db_name$ending <- word(db_name$name,-1)
 db_end_count <- data.frame(table(db_name$ending)) %>%
  arrange(desc(Freq)) %>% 
  filter(row_number()<=100)
 db_end <- str_c(db_end_count$Var1,"", collapse = "|")`

我想从每个字符串的末尾删除这些常用结尾,而不是从内部字词中删除它们(&#39;通讯公司&#39;没有成为&#39; mmunications&# 39;),并保留仅由一个单词组成的公司名称。

我一直在试验的解决方案我来自这里:R remove last word from string,基本上说是gsub("\\s*\\w*$", "", db_name$name),除了我用100的向量替换了\\ w最常见的结局,使用rebus包。但是,我尝试的每种不同的形式(有或没有*或\\ s)都会导致我上面描述的问题之一(截断的单词,整个单词的省略)。

有人可以提出一种方法,我可以从公司版本的 end 中删除最常见的公司结尾,无论是以我迄今为止的方式,还是更多的东西聪明?谢谢!

1 个答案:

答案 0 :(得分:0)

感谢您的帮助,但在同事的帮助下,我能够在上面提到的解决方案中包含我想要的矢量,并将其粘贴为:  db_name$names <- gsub(paste0("\\s(",db_end,")+$"), "", db_name$name)