如何检查第一个数据帧中的值是否包含或与另一个数据帧中的值匹配

2024-04-08

我在用R处理一些数据框。我的问题与如何检查第一个数据帧中的变量值是否与另一个数据帧中的值匹配有关。这场比赛与其他比赛有很大不同merge or join。我将介绍我的数据框(dput()最后):

我的第一个数据框是df1。它包含变量name我想将其与第二个数据框中的其他变量进行对比。它看起来像这样:

df1
                   name
1            JUAN GIRON
2            GINA OLEAS
3 JUAN FERNANDO ELIZAGA
4          MARCO TORRES
5   JUAN PABLO GONZALEZ
6            IRMA GOMEZ

第二个数据框是df2。它还包含一个变量name这将用于与name from df1。看起来像这样(在真实情况下df2可以非常大,超过 1000 行):

df2
                      name val
1            JUANA MARQUEZ   1
2         FERNANDO ELIZAGA   2
3               IRMA GOMEZ   3
4           PABLO GONZALEZ   4
5               GINA LUCIO   5
6              MARK TORRES   6
7           LETICIA BLACIO   7
8 JUAN PABLO GIRON BELTRAN   8

我正在寻找一种方法来检查每一行是否df1 for name变量包含或与任何值匹配name in df2。例如,值JUAN GIRON检查后name from df2应该返回,给出一个值yes因为它包含在字符串中JUAN PABLO GIRON BELTRAN from df2。同样的情况也适用于其他值。最后我想要这样的东西:

df3
                   name val
1            JUAN GIRON yes
2            GINA OLEAS  no
3 JUAN FERNANDO ELIZAGA yes
4          MARCO TORRES  no
5   JUAN PABLO GONZALEZ yes
6            IRMA GOMEZ yes 

我怎样才能达到这个结果?我尝试过grepl()使用连接字符串|但它不起作用,因为某些值正在返回yes不匹配时匹配。

另外,由于数据可能很大,我想有一个解决方案dplyr因为比较是按行进行的,所以速度可能很慢。或者欢迎任何快速解决方案。非常感谢!

接下来是数据:

#df1
df1 <- structure(list(name = c("JUAN GIRON", "GINA OLEAS", "JUAN FERNANDO ELIZAGA", 
"MARCO TORRES", "JUAN PABLO GONZALEZ", "IRMA GOMEZ")), row.names = c(NA, 
-6L), class = "data.frame")

#df2
df2 <- structure(list(name = c("JUANA MARQUEZ", "FERNANDO ELIZAGA", 
"IRMA GOMEZ", "PABLO GONZALEZ", "GINA LUCIO", "MARK TORRES", 
"LETICIA BLACIO", "JUAN PABLO GIRON BELTRAN"), val = 1:8), row.names = c(NA, 
-8L), class = "data.frame")

也许我们可以这样做

df1 %>%
    mutate(val = c("no", "yes")[1 + (rowSums(
        outer(
            strsplit(name, "\\s+"),
            strsplit(df2$name, "\\s+"),
            Vectorize(function(x, y) all(x %in% y) | all(y %in% x))
        )
    ) > 0)])

这使

                   name val
1            JUAN GIRON yes
2            GINA OLEAS  no
3 JUAN FERNANDO ELIZAGA yes
4          MARCO TORRES  no
5   JUAN PABLO GONZALEZ yes
6            IRMA GOMEZ yes
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查第一个数据帧中的值是否包含或与另一个数据帧中的值匹配 的相关文章

随机推荐

  • 通过 UDF 获取 Google 搜索第一个结果[重复]

    这个问题在这里已经有答案了 Santosh 对以下问题有一个很棒的答案 vba 代码 link https stackoverflow com questions 17495644 using vba in excel to google
  • 将 .NET 事件公开给 COM?

    我一直在尝试向 VBA 客户端公开并触发事件 到目前为止 在 VBA 客户端 事件已公开 并且我看到方法事件处理方法已添加到我的模块类中 但是 VBA 事件处理方法不会触发 由于某种原因 调试时事件为空 同步修改我的代码也没有帮助 作为记录
  • 文件锁如何工作?

    我一直在尝试使用FileLock获得对文件的独占访问权限 以便 删除它 重命名它 写信给它 因为在 Windows 上 至少 您似乎无法删除 重命名或写入已在使用的文件 我写的代码看起来像这样 import java io File imp
  • Spring security 已登录用户的重定向问题

    在使用我的基于 GWT 的 Web 应用程序实现 Spring Security 时 我找到 一切都按预期正常工作 除了以下事实 我打开了 login jsp 并给出了有效的用户登录凭据 提交后 成功重定向到主页 现在 当我在地址栏中编辑
  • 电子关闭按钮不起作用

    我正在尝试使用 Electron 以前称为 Atom Shell 创建一个应用程序 该应用程序包装了 AngularJS 应用程序 并与在 Node js 中创建的端点交互以编辑和保存 HTML 内容 我能够毫无问题地创建应用程序 当我尝试
  • glEnableClientState 和 glEnableVertexAttribArray

    后者是否贬低前者 我正在编写希望在着色器 2 0 硬件上工作的代码 但我想使用更新的编程约定 例如 VAO 所以我一直在使用glVertexAttribPointer函数而不是glVertexPointer glNormalPointer
  • 强制 ListView 的 onSizeChanged

    我有一个列表视图 它动态分配不同的数据集 这很好用 我还使 fastScrollEnabled 为 true 为了更新sectionIndexer 我需要调用 list setFastScrollEnabled false list set
  • 如何禁用 Jupyter 笔记本会话的密码请求?

    多年来我一直使用以下命令启动 Jupyter Notebook jupyter notebook port 7000 no browser no mathjax 当我尝试在浏览器上打开 jupyter 时 它会要求我输入密码 即使我以前从未
  • 在自动布局世界中正确调整 NSWindow 大小

    我在使用自动布局滚动视图调整垂直窗口大小时遇到 问题 我想要的是 我想尽可能地复制我的应用程序当前的窗口大小调整行为 窗口的宽度是灵活的 但窗口的高度通常应跟踪内容的高度 具体来说 通常 窗口会自动调整其高度以精确调整匹配其内容 2 除外
  • 如何将多个变量从 Excel 文件传递​​到批处理文件

    我目前可以使用以下命令将一个参数从 Excel 文件传递 到批处理文件 filepath C Users agaron Desktop batchmaster batchfiles batchfiletest bat month 然后调用
  • PHP 方法链接混乱

    我最近接触了方法链接 并且不确定我在这里所做的是否非法 或者我做错了 我有一个数据库类 例如 class Database private connection private resultset last query current ro
  • 使用带有当前时间的随机数生成器与不使用随机数生成器

    我想了解使用随机数生成器与System currentTimeMillis 作为种子并仅使用默认构造函数 也就是说 这之间有什么区别 Random rand new Random System currentTimeMillis 和这个 R
  • Web 服务器不读取 .htaccess 文件

    我安装了 Ubuntu 12 10 并安装了 apache2 但我的 htaccess 文件无法正常工作 我将其设置为在链接中不能包含 php 文件扩展名 因此看起来像 www website com login 而不是 login php
  • 使用 sidekiq 处理两个独立的 Redis 实例?

    下午好 我有两个独立但相关的应用程序 他们都应该有自己的后台队列 阅读 单独的 Sidekiq 和 Redis 进程 然而 我希望偶尔能够将工作推给app2的队列来自app1 从简单的队列 推送的角度来看 如果app1没有现有的 Sidek
  • SAPUI5自定义伪事件

    在 SAPUI5 OpenUI5 中定义自定义伪事件的最佳实践是什么 例如 假设我想在按住扩展的 sap m Button 几秒钟时触发一个事件 我不确定是否还有任何 最佳实践 我真的认为只有 一种 实践 但我渴望学习任何其他做法 所以如果
  • JPA/JPQL:SELECT 子句中不允许使用 AS 标识符

    我有一个非常复杂的 JPQL 查询 其形式为 SELECT NEW com domain project view StandingsStatLine ro id AS rid cl name AS team te ordinalNbr 1
  • 带 Riverpod 的 Flutter 导航栏

    我尝试管理我的状态 但我真的做不到 我想了解如何使用 Riverpod 包在管理页面底部创建导航栏 我设法管理我们单击的页面 但我不知道如何根据所选按钮返回正确的寻呼机 主要 dart import package flutter mate
  • 使用 Preg_Replace 替换撇号时遇到问题

    我试图从文本中删除撇号 但它并没有真正起作用 一定是一件小事 text preg replace text 这就是我现在用来删除它的方法 我究竟做错了什么 有一系列的方法可以删除特殊字符 将它们转换为网址并将它们存储在我的数据库中 然而 最
  • 如何防止背景图像在更改时闪烁

    我通过 JavaScript 将重复的背景图像从画布应用到 div 如下所示 var img canvas document createElement canvas img canvas width 16 img canvas heigh
  • 如何检查第一个数据帧中的值是否包含或与另一个数据帧中的值匹配

    我在用R处理一些数据框 我的问题与如何检查第一个数据帧中的变量值是否与另一个数据帧中的值匹配有关 这场比赛与其他比赛有很大不同merge or join 我将介绍我的数据框 dput 最后 我的第一个数据框是df1 它包含变量name我想将