将不同联系电话号码和电子邮件组合为同一联系人的算法方法[重复]

2024-03-09

我有以下小题,

contact <- tribble(
  ~name, ~phone, ~email,
  'John', 123, '[email protected] /cdn-cgi/l/email-protection',
  'John', 456, '[email protected] /cdn-cgi/l/email-protection',
  'John', 456, '[email protected] /cdn-cgi/l/email-protection',
  'John', 789, '[email protected] /cdn-cgi/l/email-protection'
)

如果电话或电子邮件相同,我想合并电话号码和电子邮件,所需的输出如下,

contact_combined <- tribble(
  ~name, ~phone, ~email,
  'John', '123;456', '[email protected] /cdn-cgi/l/email-protection;[email protected] /cdn-cgi/l/email-protection',
  'John', '789', '[email protected] /cdn-cgi/l/email-protection'
)

我尝试先按姓名和电话进行分组,然后按姓名和电子邮件进行分组,但它没有给我预期的结果。我一直在寻找一种算法方法来解决这个问题,有人可以给我建议吗?

注意:列中值的折叠不是这里的问题。这是关于选择要折叠的记录。


图表可以帮助解决这个问题。

library(igraph)

# creates a matrix which tells whether pairs of vector elements are equal or not
equal_mat <- function(x) {
  
  outer(x, x, '==')
}

m.adj <- equal_mat(contact$phone) | equal_mat(contact$email)
g <- graph_from_adjacency_matrix(m.adj, mode='undir')

t(sapply(split(contact, components(g)$membership), function(group)
  sapply(group, function(column)
    paste(sort(unique(column)), collapse=';')))) %>%
  as_tibble()

# # A tibble: 2 × 3
#   name  phone   email                                
#   <chr> <chr>   <chr>                                
# 1 John  123;456 [email protected] /cdn-cgi/l/email-protection;[email protected] /cdn-cgi/l/email-protection
# 2 John  789     [email protected] /cdn-cgi/l/email-protection                   

You can think of your original contacts as a graph, i.e. a set of vertices, one for each row in contact, which are connected by edges if two contacts have the same phone number or email. In your case the graph looks like this, plot(g): Graph of contacts

触点 1-3 形成一个连接组件,而没有连接的触点 4 是另一个组件。每个这样的组件都应该合并到最终输出中的一个联系人中。

我们从邻接矩阵创建图m.adj告诉哪些顶点(节点)已连接,并且使用以下方式识别图组件

components(g)$membership
[1] 1 1 1 2

这准确地告诉了我们上面看到的内容:触点 1-3 构成组件 1,触点 4 是组件 2。现在我们可以折叠每个组件内的值。

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

将不同联系电话号码和电子邮件组合为同一联系人的算法方法[重复] 的相关文章

  • LRU、FIFO、随机

    当出现页面错误或缓存未命中时 我们可以使用最近最少使用 LRU 先入先出 FIFO 或随机替换算法 我想知道 哪一个提供了最好的性能 也称为未来缓存丢失 页面错误最少的可能性 架构 Coldfire 处理器 没有愚蠢的问题 这句话非常适合这
  • Welzl 算法的迭代版本

    我正在使用 Welzl 算法来查找点云的最小外接圆 2d 或最小外接球体 3d 不幸的是 该算法具有非常高的递归深度 即输入点数 这个算法有迭代版本吗 我找不到任何并且不知道如何将递归更改为循环 我发现了一些迭代的最小包围圆 球算法 但它们
  • 将 diff 转换为带有删除线的 Markdown?

    我想转换输出diff 在 Markdown 文件上 降价与
  • 如何找到权重为 1、0、-1 且成本精确为 0 的多维路径

    我得到了一个有向图 其中有 n 个节点和边 向量的权重 每个向量的长度为 m 为数字 1 0 1 我想找到从一个节点到另一个节点 我们可以多次访问节点 的任何路径 或者说这样的路径不存在 使其权重之和等于仅由零组成的向量 我正在考虑暴力回溯
  • corr.test 与 cor.test p 值

    我正在尝试使用 psych 包 psych 1 6 9 中的 corr test 但在使用 method spearman 时 它似乎给出了与 cor test 不同的 p 值 相关系数相同 但 p 值不同 我整理了一些示例代码和输出 如下
  • 哪种 LaTeX 包与 knit 一起使用以获得更多的表格控制?禁忌?

    我正在用 knitr 写一张更长的桌子xtable和tabular environment longtable 在 longtable 包中时print将它们纳入我的 Rnw file 问题是我对longtable环境控制不够 我有一些文本
  • 如何决定权重?

    对于我的工作 我需要某种具有以下输入和输出的算法 输入 一组日期 过去的日期 输出 一组权重 每个给定日期一个权重 所有权重的总和 1 基本思想是 距离今天日期最近的日期应该获得最高的权重 第二个最接近的日期将获得第二高的权重 依此类推 有
  • R:使用 as.formula 修复模型中的模型调用

    我有一个gls模型 其中我将公式 来自另一个对象 分配给模型 equation lt as formula aic obj row model gt equation temp avg I year 1950 mod1 lt gls equ
  • 排序数组最快的搜索方法是什么?

    正在回答另一个问题 https stackoverflow com questions 4752028 whats wrong with this interpolation search implementation 4752042 47
  • R 包“raster”在搜索“terra”最新版本时无法上传

    我正在 Windows 10 中使用 RStudio 2021 09 2 中的 R 4 1 2 工作 我正在处理空间数据 包括矢量和栅格 但三天前命令库 栅格 开始向我发出此警告 错误 loadNamespace i c lib loc l
  • 在 R 中使用科学记数法和 xtable

    我将 data frame 传递给 xtable dat table lt xtable dat 1 20 digits 10 我宁愿使用科学记数法 而不是像那样显示数字 我该怎么做呢 看过了 但我发现的只是R 格式化xtable中的数字
  • 在 R 绘图上使用鼠标书写?

    我使用创建了散点图plot R 中的函数 有没有可能在这个图上画图 我想添加一条直线并获取它的参数 但在我看来abline 可能会很不方便 我想画很多条线 然后选择一条最合适的 我怎样才能完成这个任务 看看 RStudio 和这个例子 li
  • 如何在 ggplot2 中向 x 轴添加特定值?

    我正在尝试在 ggplot2 中绘制图表 我希望 x 轴显示 2 84 以及下面键入的序列 除了在 Breaks 中输入所有精确值之外 还有其他方法吗 我尝试了谷歌 但它没有解决我的问题 scale x continuous limits
  • 整理包中的字段说明

    我很抱歉 因为我知道这个答案可能出现在编写 R 包的手册中 但在我阅读和查看其他包的整理字段时 我无法 100 弄清楚该字段的用途 用简单的语言 我的是英语 来看 包的描述文件中的整理字段有什么作用 人们想在那里放什么 我认为这来自于某个时
  • ggplot2:图例中的斜体

    我正在尝试编辑图例中的标签 以便第一个标签 WT 为纯文本 而后续 7 个标签为斜体 我一直在使用element text face c plain rep italic 7 但这导致没有任何标签被转换为斜体 我有点困惑为什么它不起作用 因
  • 从邻接表计算图的入度

    我遇到了这个问题 其中需要根据邻接列表表示来计算图的每个节点的入度 for each u for each Adj i where i u if i u E in degree u 1 现在根据我的说法 它的时间复杂度应该是O V E V
  • 在ggplot2中添加水平线到绘图和图例

    这段代码创建了一个漂亮的图 但我想在 y 50 处添加一条水平黑线 并让图例显示一条黑线 并在图例中显示文本 cutoff 但在图例中保留源点 我可以使用 geom line 添加该行 但无法在图例中获取该行 library ggplot2
  • 生成与现有变量具有预定义相关性的二进制变量

    对于模拟研究 我想生成一组随机变量 连续变量和二元变量 这些变量与已经存在的变量具有预定义的关联binary变量 此处表示为x 对于这篇文章 假设x是按照下面的代码生成的 但请记住 在现实生活中 x是一个已经存在的变量 set seed 1
  • 动态显示仪表板页面

    我有一个实用的闪亮应用程序 它使用shinydashboard包裹 新功能需要特定于用户的行为 例如 针对不同的用户名使用不同的数据集 因此我打算 显示登录表单 验证凭据并设置反应值LoggedIn to true如果成功的话 显示实际情况
  • 修改x轴刻度标签

    我正在尝试更改由生成的箱线图的 x 轴刻度标签ggplot2 x 轴是一个分类变量 HabFac 我想要的是将其刻度更改为 6 个化学品 A E 下面是我的代码 raw data read table Read data p TT ggpl

随机推荐

  • 将 matplotlib 图形传递给 HTML (flask)

    我正在使用 matplotlib 在网络应用程序中渲染一些图形 我用过fig savefig 之前当我只是运行脚本时 但是 我需要一个函数来返回实际的 png 图像 以便我可以使用 HTML 调用它 更多 可能不必要的 信息 我正在使用 P
  • 生成电子邮件确认的确认码

    使用 PHP 有哪些方法可以生成可以存储在数据库中并用于电子邮件确认的随机确认码 我一辈子都想不出一种方法来生成可以从用户的个人资料中生成的唯一号码 这样我就可以使用一个函数使数字足够小以包含在 URL 中 看到这个链接 http kevi
  • Rstudio 正在命令行中复制命令

    R 中有一个奇怪的问题 似乎不知从何而来 RStudio 终端中的输出在我没有要求的情况下重复了 即 gt 3 4 gt 3 4 1 7 1 7 其他人有这个问题并有任何想法如何解决吗 我还想知道它是否实际上执行了两次命令 并且大大减慢了速
  • “Java HotSpot(TM) 64 位服务器 VM 警告:无法保留共享内存。(errno=12)”

    我正在使用 putty 连接虚拟机 我在那里安装了java8和tomcat8 尝试使用 tomcat 作为远程服务器运行应用程序时出现 404 错误 所以我重新启动了tomcat 停止服务器时我收到此错误 谁能知道这个问题的解决方案吗 无法
  • Flutter 导航弹出到索引 1

    我正在递归地将路线添加到导航器中 可能有 20 次或更多观看次数 Pop 的工作原理与宣传的一样 但我想弹出到索引 1 并删除所有推送历史记录 有没有办法用类似的命令替换这个 pop 命令 returntoIndex0 new ListTi
  • MongoDB 绑定查询:如何将英里转换为弧度?

    我有一组商店 其位置属性上有地理空间索引 我想做的是给定用户的纬度 纬度和搜索半径 mi 我想返回这些参数内的商店列表 我在 MongoDB 文档上看到了以下示例 http www mongodb org display DOCS Geos
  • 更改 TimePicker (RadialTimePickerView) 的颜色?

    如何更改 TimePicker RadialTimePickerView 的数字 选择器颜色 我可以看到 RadialTimePickerView 通过使用设置其内部颜色 final int numbersTextColor a getCo
  • 设置 SQL Server 2005 的区域设置

    默认情况下 SQL Server 的语言设置为 英语 美国 将日期格式设置为 mm dd yy 而不是我想要的日期格式 这是澳大利亚的日期格式 例如 dd 毫米 年 Server Management Studio 配置工具中是否有一个选项
  • 如何在 Azure 应用程序见解上忽略 localhost

    我最近开始托管我的第一个生产应用程序 我继续并激活了应用程序洞察力 我认为这有很大的价值 但是 我得到来自开发人员方面的统计信息 例如日志记录来自 localhost xxxx 的条目 我确信有办法关闭它 有人可以给我一些指点吗 您还可以使
  • 使用 StrongLoop 自动创建 mysql 表

    我正在尝试将 Strongloop 与 MySql 一起使用 但无法弄清楚如何将表迁移或自动创建到 MySql 数据库中 是否至少有一种方法可以将模型导出到 MySql 架构中 或者我是否必须手动创建表 我一直在尝试使用 mysql 演示应
  • 如何在 Google Cloud Firestore 中强制文档字段属性的唯一性

    我有以下数据 如图所示 我想确保用户名字段是唯一的 我怎样才能强制执行呢 请记住 我的文档 ID 已经是唯一的 我不想使用我的用户名作为文档 ID 无法在 Firestore 中强制执行字段的唯一值 您可以保证的唯一唯一性是集合中的文档 I
  • 无法执行从 SonarQube 5.6.1 LTS 到 6.0 的数据库迁移

    我最近尝试从 SonarQube 5 6 1 LTS 升级到 6 0 我使用了升级指南 但出现数据库迁移错误 无法执行数据库迁移 org sonar db version v60 CleanUsurperRootComponents com
  • Jersey REST 服务失败:java.lang.InknownClassChangeError:实现类

    我希望 Jersey 能够轻松部署到 Google App Engine 因为据说它受到支持 http code google com p googleappengine wiki WillItPlayInJava http code go
  • 是否有与 eval("function(arg1, arg2)") 等效的 C/C++?

    它需要一种方法来调用名称存储在类似于 eval 的字符串中的函数 你能帮我吗 C 没有反射 所以你必须破解它 i 即 include
  • 完美服务器:找不到租户

    我正在尝试启动 Prefect Agent 以便完成与 Prefect Server 的设置 而不是使用prefect server start对于开箱即用的设置 我使用了prefect server config生成 Docker Com
  • 语法错误:标识符紧随数字文字之后开始。将 php 变量传递给 JavaScript

    我试图将两个变量传递给 JavaScript 函数 输入本身和用户 ID 我使用输入的 onclick 属性调用该函数 echo
  • 如何将任何服务注入到 Symfony 中的 WebTestCase 子类中?

    也许我错过了一些东西 哦 我想是的 但找不到答案 WebTestCase生成此构造函数示例 public function construct string name null array data string dataName pare
  • 第二个最大的数

    我到处搜索找到第二大数字的解决方案 但我在所有站点中都得到了一个解决方案 而且它是错误的 我找到的代码 public static void main String args int arr 1 23 47 81 92 88 52 48 5
  • 如何使用 NodeJS 获取“HTTP_REFERER”?

    一种获取方式HTTP REFERER 我们可以用document referrer在浏览器端 javascript 中 但是我们如何在 NodeJS 中获取它呢 您可以通过 获取它 req headers referer in var ht
  • 将不同联系电话号码和电子邮件组合为同一联系人的算法方法[重复]

    这个问题在这里已经有答案了 我有以下小题 contact lt tribble name phone email John 123 email protected cdn cgi l email protection John 456 em