模糊匹配微小差异

2023-12-02

我有一列公司名称,我想计算该列中有多少家不同的公司。在本栏目中,一些相同的公司名称略有不同,例如,这些公司应该只计算一次。

ASAHI INTECC CO., LTD.
Asahi Intecc USA Inc
ASAHI INTECC USA, INC

我想要可以通用的代码,它可以精确地计算公司的数量,而无需计算略有差异的重复项。 例如,此可重现数据应返回值 6

company <- read.table(text = "
          CompanyName
          'MERCK SHARP & DOHME CORPORATION'
          'GILEAD SCIENCES INC'
          'BOEHRINGER INGELHEIM PHARMACEUTICALS, INC.'
          'ABBVIE, INC.'
          'JANSSEN SCIENTIFIC AFFAIRS, LLC'
          'BOEHRINGER INGELHEIM PHARMA GMBH & CO.KG'
          'ASAHI INTECC CO., LTD.'
          'Asahi Intecc USA Inc'
", header = TRUE, stringsAsFactors = FALSE)

我在看如何匹配两个数据集中的模糊匹配字符串?但我仍然不知道如何构建代码。希望有什么建议


要比较字符串之间的相似性,第一步通常是用您拥有的最佳知识清理数据:

由于许多计算字符串距离的方法会将大写和小写字母视为不同的字母,因此首先应将所有字符转换为相同的大小写。您还可以进行任何其他清洁以帮助提高准确性。

library(dplyr)
companyName <- company$CompanyName %>%
    toupper() %>% # convert to upper case
    stringr::str_replace_all("\\s+"," ") %>% # convert any consecutive whitespaces to single space
    stringr::str_remove_all("\\.|,") # remove all comma or dot
> companyName
[1] "MERCK SHARP & DOHME CORPORATION"          "GILEAD SCIENCES INC"                      "BOEHRINGER INGELHEIM PHARMACEUTICALS INC"
[4] "ABBVIE INC"                               "JANSSEN SCIENTIFIC AFFAIRS LLC"           "BOEHRINGER INGELHEIM PHARMA GMBH & COKG" 
[7] "ASAHI INTECC CO LTD"                      "ASAHI INTECC USA INC"    

计算字符串距离:

distanceMatrix <- stringdist::stringdistmatrix(
    a = companyName,
    b = companyName,
    # You can pick the method that works best for your data. Also, manual inspection is needed. See ?stringdist 
    # I'm picking soundex for this example
    method = "soundex"
)

通过使用soundex方法,如果一个细胞是0,表示对应的行和列非常接近

> distanceMatrix
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,]    0    1    1    1    1    1    1    1
[2,]    1    0    1    1    1    1    1    1
[3,]    1    1    0    1    1    0    1    1
[4,]    1    1    1    0    1    1    1    1
[5,]    1    1    1    1    0    1    1    1
[6,]    1    1    0    1    1    0    1    1
[7,]    1    1    1    1    1    1    0    0
[8,]    1    1    1    1    1    1    0    0

这意味着,在companyName向量,第 3 项接近第 6 项,第 7 项接近第 8 项。

result <- which(distanceMatrix==0,arr.ind = TRUE) %>%
    as.data.frame() %>%
    dplyr::filter(col > row)
> result
  row col
1   3   6
2   7   8

> result %>% mutate_all(~companyName[.x])
                                       row                                     col
1 BOEHRINGER INGELHEIM PHARMACEUTICALS INC BOEHRINGER INGELHEIM PHARMA GMBH & COKG
2                      ASAHI INTECC CO LTD                    ASAHI INTECC USA INC

请注意,您可以通过清理字符串或在计算字符串距离时选择不同的方法、参数或阈值来提高准确性。但它永远不能保证 100% 的准确性。

最后,要计算独特的公司,我们可以这样做:

> length(companyName) - length(unique(result$row))
[1] 6
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模糊匹配微小差异 的相关文章

  • 长变量名在 dplyr 中失败

    长度超过 39 个字符的字符串在 dplyr 中失败 返回错误 错误 索引超出范围 我错过了什么还是这是一个错误 40 个字符不起作用 library dplyr names iris 5 lt vvv 5vvv10vvv15vvv20vv
  • 带有用户输入的knitr

    我正在使用 R markdown 并使用 Rstudio 来 Knit 我有以下 R markdown 文件 title Untitled author date output html document r setup include F
  • 简单的数据框重塑

    我刚刚从长时间的写作中断中回到 R 并且在记住如何重塑数据方面遇到了一些实际问题 我知道我想做的事情很容易 但出于某种原因 我今晚很愚蠢 并且将自己与融化和重塑混淆了 如果有人能快速指出我正确的方向 我将不胜感激 我有一个这样的数据框 pe
  • R - 在浏览器中获取帮助而不是内置的 R 帮助程序

    我见过 R help 的两种不同行为 当你输入 density例如 帮助已在您的默认浏览器中打开 帮助在内置 R 帮助程序中打开 R 中的窗口 我目前有第二种行为 但我想在浏览器中打开帮助 我可以轻松地在这两种行为之间切换吗 无需重新安装
  • 使用底格里斯河从纬度/经度获取人口普查区

    我有相对较多的坐标 我想获取其人口普查区 除了 FIPS 代码 我知道我可以使用以下命令查找各个纬度 经度对call geolocator latlon 已完成here https stackoverflow com questions 5
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • 如何在不循环的情况下添加组ID?

    我有数据框 例如 productid ordernum p1 10 p2 20 p3 30 p4 5 p5 20 p6 8 我想添加另一列 称为 groupid 它将产品按顺序分组在一起 一旦 sum ordernum 达到 30 分配一个
  • 如何使用 R 中带引号的字符值内的序列读取 CSV?

    这是一个包含两个字符列的 CSV 文件 key value a 所有字符值都用双引号引起来 并且有一个顺序 在值之一内 转义引号加分隔符 我无法通过 read csv readr 中的 read csv 或 data table 中的 fr
  • 如何在 R 中为传单中的数值变量设置不对称颜色渐变

    我想让传单调色板以零为中心 红白绿发散 我已经尝试过中所说的这个帖子 https stackoverflow com questions 29262824 r center color palette on 0 当我尝试手动创建颜色时 我得
  • 错误:“rjags”的包或命名空间加载失败

    在终端的 conda 环境之一中 我能够成功安装包 rjags 但是 当我在该环境中运行 R 并运行库 rjags 时 出现以下错误 加载所需的包 coda 错误 rjags 的包或命名空间加载失败 rjags 的 loadNamespac
  • 在 R 中绘制对数正态概率密度

    我正在尝试在 R 中生成对数正态概率密度图 其中包含 3 个不同的均值对数和标准差对数 我尝试了以下方法 但我的图表太丑了 看起来一点也不好看 x lt seq 0 10 length 100 a lt dlnorm x meanlog 0
  • 从 R 环境中删除对象

    我正在阅读 Hadley 的 Advanced R 在第 8 章中 他说我们可以使用以下方法从环境中删除对象 rm 但是 移除该物体后我仍然可以看到该物体 这是我的代码 e lt new env e a lt 1 e b lt 2 e a
  • 在另一个 Rmd 中运行选定的块

    我已经在源 Rmd 文件中运行了分析 并且希望仅使用few来自源的块 我已经看到了一些关于从源 Rmd 中提取所有块的答案来自另一个 Rmd 中的 Rmd 文件的源代码 https stackoverflow com questions 4
  • R 编程:如何计算数据框中两个单元格之间的差异并将它们保存在新列中

    尝试学习 R 并陷入自相关示例中 我想将 x 的差异与 y 的差异进行回归 我在数据框中有 x 和 y 并且希望将 x2 x1 的差值保存在新列 例如 dx 中 我不知道该怎么做 我拥有的 data1 x y 5 3 8 9 3 1 1 5
  • 使用outer代替expand.grid

    我正在寻找尽可能快的速度并留在基地做该做的事expand grid做 我用过outer为过去类似的目的创建一个向量 像这样的东西 v lt outer letters LETTERS paste0 unlist v lower tri v
  • 有没有一种简单的方法来判断存储在一个列表中的许多数据帧是否包含相同的列?

    我有一个包含许多数据框的列表 df1 lt data frame A 1 5 B 2 6 C LETTERS 1 5 df2 lt data frame A 1 5 B 2 6 C LETTERS 1 5 df3 lt data frame
  • 如何计算嵌套函数中的粘合表达式?

    我正在尝试嵌套一个函数 该函数将两个字符串粘合在一起 该函数使用组合字符串来命名数据帧的列 然而 问题似乎是粘合表达式没有足够早地评估为字符串 我可以 并且应该 强制在将表达式作为参数传递给另一个函数之前对其进行求值吗 library ti
  • 使用predictNLS围绕R中的拟合值创建置信区间?

    我想使用 R 中 propogate 包中的 PredictNLS 围绕一大组拟合值构建置信区间 作为示例 我将使用它们在函数描述中引用的数据集 https rdrr io github anspiess propagate man pre
  • GGPLOT2:如何在 ggplot() 脚本中绘制特定选择

    这是一个名为的大型数据集的峰值P 其中有 10 个优惠 CS 有不同的商店 SHP 具有多个数值 数据集列出了按周排序的它们 WK 2 tm 52 它创建一个大文件 仅前 6 行出现峰值 WK MND CS SHP RevCY RevLY
  • 非闪亮上下文中的反应式对象绑定

    实际问题 你怎样才能近似反应性环境 行为 http shiny rstudio com tutorial lesson6 建立者shiny http shiny rstudio com函数 或者甚至可能在一个函数中使用这些函数无光泽上下文以

随机推荐

  • php/Ajax - 预加载图像的最佳实践

    我编写了一个非常类似于 flickr 照片流功能的脚本 两个缩略图彼此相邻 当您单击下一个或上一个链接时 下一个 或上一个 图像会滑入 酷 目前 当页面加载时 它会加载两个图像 第一次使用 nxt prv 时 接下来的两个图像或前两个图像将
  • 证明匹配类型解析为特定的具体类型

    我正在尝试创建一个使用匹配类型的特征的实现 其中该匹配类型的右侧是预先已知的 但是 我似乎无法让编译器接受我的 证明 这对我来说很新 如果这真的很明显 我很抱歉 有人可以帮助我了解我是否 如何能够实现我想要的吗 这是一些最小的代码 Scas
  • C++ 中的移动构造函数和复制构造函数

    我的理解是 当我们从函数返回本地对象时 如果移动构造函数存在 则会调用它 但是 我遇到了调用复制构造函数的情况 如以下函数中的示例所示foo2 为什么会发生这种事 include
  • 如何更改 OpenCV 应用程序中轨迹栏的位置?

    通常在我的 OpenCV 项目中 创建轨迹栏并将其放置在窗口中后 它会水平显示在窗口底部 是否可以更改轨迹栏的位置和方向 很不幸的是 不行 cv createTrackbar 不允许更改轨迹栏的位置和方向 但是如果你安装了 Qt 你可以创建
  • 忽略 JSON.NET 数据解析期间的解析错误

    我有一个具有预定义数据结构的对象 public class A public string Id get set public bool Enabled get set public int Age get set JSON 应该是 Id
  • 对 UITableViewCell 的accessoryView 使用自定义图像并让它响应 UITableViewDelegate

    我正在使用自定义绘制的 UITableViewCell 包括与单元格相同的accessoryView 我对accessoryView的设置是通过这样的方式进行的 UIImage accessoryImage UIImage imageNam
  • 将 C# 模型从视图传递到 Javascript

    我将此 ViewModel 传递给我的视图 public class DashboardViewModel public List
  • 不使用数据透视表根据每日数据计算月平均值

    我的工作表包含两列 A 列包含以下格式的日期dd mm yyyyB 列包含每日数据 根据每日数据 我必须在没有数据透视表的情况下生成每个月的月平均值 有些日子根本不包含任何数据 我无法使用数据透视表 因为我必须在稍后阶段使用月平均值来识别每
  • 级联删除表的子记录

    我有一个包含列 id 名称和parentid 的表 模型中的关系函数 location parent gt array self BELONGS TO Location parentid location children gt array
  • 使用 CSS 将非等宽字体强制设置为固定宽度

    有没有办法使用 CSS 强制字体为等宽字体 我的意思是 使用非等宽字体 您可以强制浏览器以固定宽度呈现每个字符吗 如果这是为了对齐表格中的数字 其中某些字体 使用传统排版 默认以可变宽度呈现它们 例如 Windows 上的 Segoe UI
  • NSLog - 如何打印对象名称?

    考虑 NSString myString Welcome NSLog myString 将打印Welcome在控制台中 我可以打印字符串 myString Welcome 我的意思是 我可以获得对象名称 myString 以及对象值 Wel
  • 在此示例中如何从目标列表中获取所有值

    我找到了这个example有两个JLists 我怎样才能从目的地获得所有值JList 我是Java新手 我想从第二个列表中获取所有值来进行一些测试来研究 import java awt BorderLayout import java aw
  • 是否可以使用行号和列号进行 SQL 更新? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在使用 jquery
  • Java mapToInt 与使用 Map 进行Reduce

    我一直在阅读有关reduce的文章 刚刚发现有一个3参数版本 基本上可以像这样执行map缩减 String strarr abc defg vwxyz System out println Arrays stream strarr redu
  • 如何使用 FMDB 将图像(字节)保存和检索到 SQLite(blob)?

    我正在制作一个 iOS 应用程序 需要显示来自远程站点 来自 URL 的一些图像 每次用户进入应显示图像的屏幕时 应用程序都会冻结 直到下载完成 所以我想将已经下载的图像存储到名为 COVERS 的 SQLite 表中 这是我如何下载和显示
  • 创建一个包含 n 个字符的字符串

    Java中有没有办法创建一个具有指定数量指定字符的字符串 就我而言 我需要创建一个包含十个空格的字符串 我当前的代码是 final StringBuffer outputBuffer new StringBuffer length for
  • R:识别 JSON 中的地理坐标

    我正在使用 R 编程语言 我的问题 我正在尝试自己在这里重新创建这张地图 例如在传单中 https crtc gc ca cartovista LTEOverTheYearsYE2019 EN index html 例如 2019 年 这是
  • 如何使用 React es6 处理多个受控输入?

    这是我的小提琴 https codepen io seunlanlege pen XjvgPJ editors 0011 我有两个输入 我正在尝试使用一种方法来处理onChange任何输入字段的事件 我已经在互联网上寻找解决方案 但一无所获
  • 当 Pod“忙”时向 Kubernetes 指定

    我的一项微服务正在 Kubernetes 上运行 我想在 Pod 繁忙时指定 K8s 负载均衡器 因为我当前得到的行为不正常 一个例子 我有 8 个 pod 正在运行 每个 pod 一次可以处理 1 个请求 每个请求占用分配给 Pod 的
  • 模糊匹配微小差异

    我有一列公司名称 我想计算该列中有多少家不同的公司 在本栏目中 一些相同的公司名称略有不同 例如 这些公司应该只计算一次 ASAHI INTECC CO LTD Asahi Intecc USA Inc ASAHI INTECC USA I