如何在R中使用regex创建一个新的规范化公司名称列?

时间:2017-05-02 02:50:24

标签: r regex fuzzy-comparison

我有一个包含公司名称列的数据框。我想创建一个新的列,它是名称的模糊/规范化版本(可能使用正则表达式来删除后缀,例如“corporation”,inc“和”llc“以及类似”the“的前缀)。

name <- c("Microsoft", "Apple, Inc.", "Youtube, LLC", "Huffington Post")
companies <- data.frame(name)

我希望公司$ canonicalized_name返回

"microsoft", "apple", "youtube", "huffington post"

如何在R?

中编写此正则表达式模式

1 个答案:

答案 0 :(得分:1)

我不知道应该将哪些规则用于规范化您的数据,但如果您只想(a)删除逗号后的所有内容,然后将字符串转换为小写(就像您在示例中所做的那样),可以例如使用

执行此操作
library(dplyr)
library(stringr)
name <- c("Microsoft", "Apple, Inc.", "Youtube, LLC", "Huffington Post")
companies <- data.frame(name) %>%
        dplyr::mutate(canonicalized_name = stringr::str_replace(name, ",.*", "") %>% tolower)

companies
#              name canonicalized_name
# 1       Microsoft          microsoft
# 2     Apple, Inc.              apple
# 3    Youtube, LLC            youtube
# 4 Huffington Post    huffington post