R - 根据多个条件匹配来自 2 个数据帧的值(当查找 ID 的顺序是随机时)

2024-03-26

嗨我有两个数据框:

df1 = data.frame(PersonId1=c(1,2,3,4,5,6,7,8,9,10,1),PersonId2=c(11,12,13,14,15,16,17,18,19,20,11),
             Played_together = c(1,0,0,1,1,0,0,0,1,0,1),
             Event=c(1,1,1,1,2,2,2,2,2,2,2),
             Utility=c(20,-2,-5,10,30,2,1,.5,50,-1,60))


df2 = data.frame(PersonId1=c(11,15,9,1),PersonId2=c(1,5,19,11),
             Played_together = c(1,1,1,1),
             Event=c(1,2,2,2))

df1 看起来像这样:

      PersonId1 PersonId2 Played_together Event Utility
1          1        11               1     1    20.0
2          2        12               0     1    -2.0
3          3        13               0     1    -5.0
4          4        14               1     1    10.0
5          5        15               1     2    30.0
6          6        16               0     2     2.0
7          7        17               0     2     1.0
8          8        18               0     2     0.5
9          9        19               1     2    50.0
10        10        20               0     2    -1.0
11         1        11               1     2    60.0

df2 看起来像这样:

  PersonId1 PersonId2 Played_together Event
1        11         1               1     1
2        15         5               1     2
3         9        19               1     2
4         1        11               1     2   

请注意 df2 并不简单df1$played_together==1。 (例如 PlayerId1 = 4 且 PlayerId2=14 不存在于 df2 中。

另请注意,虽然 df2 是 df1 的子集,但个体出现在 df2 中的顺序是随机的。例如在df1在第 1 行中,我们看到事件 1 的playerid1 = 1 和playerId2 = 11。但是在df2在第 1 行中,我们看到事件 1 的playerid1 = 11 和playerId2 = 1。这两种情况完全相同,我想查找以下值Utility from df1 to df2。每个事件都必须进行合并。最终输出应如下所示:

  PersonId1 PersonId2 Played_together Event Utility
1        11         1               1     1      20
2        15         5               1     2      30
3         9        19               1     2      50
4         1        11               1     2      60

我知道 R 中存在合并函数,但我不知道当查找 id 可以随机出现时该怎么办。如果有人能帮助我一点,我将不胜感激。提前致谢。


这是我为您准备的:

    library(dplyr)
    rbind(left_join(df2, df1, 
          by = c("PersonId2" = "PersonId1", "PersonId1" = "PersonId2", 
            "Played_together" = "Played_together", "Event" = "Event")),
          left_join(df2, df1, 
                     by = c("PersonId1" = "PersonId1", "PersonId2" = "PersonId2", 
         "Played_together" = "Played_together", "Event" = "Event"))) %>%
          filter(!is.na(Utility))

基本上,您的数据有时似乎会翻转。我们可以将两个连接绑定在一起,然后过滤掉那些具有实用程序的行NA.

你的输出看起来像这样:

    PersonId1 PersonId2 Played_together Event Utility
1        11         1               1     1      20
2        15         5               1     2      30
3         9        19               1     2      50
4         1        11               1     2      60
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R - 根据多个条件匹配来自 2 个数据帧的值(当查找 ID 的顺序是随机时) 的相关文章

  • 使用cowplot包的多重图的中心X轴标签

    我有一个多图图形 由 2x2 配置中的 4 个图组成 我使用 cowplot 包和plot grid函数使用下面的代码排列了绘图 plot grid p1 p2 p3 p4 align vh vjust 1 scale 1 其中 p1 p4
  • R CMD 检查警告:在文档对象中使用的函数/方法...但不在代码中

    我正在写一个包 但一个持久的R CMD check警告阻止我完成包裹并将其发布到 CRAN 我用roxygen2对于内联文档 尽管这可能不是错误的根本原因 如果您知道如何删除此警告 我很可能可以找到一种方法来使用roxygen2 如何删除警
  • 从频率表生成 data.frame

    我在 2 4 数组中有包含 500 个观察值的合成数据 datax array c 120 181 50 43 41 33 24 8 dim c 2 4 dimnames datax list gender c male female pu
  • 如何在 rmarkdown 中显示带有 results='asis' 的格式化 R 输出

    当使用 results asis 时 有没有办法在 rmarkdown knitr 中显示格式化程序 R 输出 一个例子是以下函数 myfun lt function cat hello n cat c one 1 two 2 然后 该块将
  • 如何更改数据表中的少数列名称

    我有一个包含 10 列的数据表 town tc one two three four five six seven total 需要生成我正在使用的列 一 到 总计 的平均值 DTmean lt DT lapply SD mean by t
  • 用于带有嵌套子图的图的 r 包? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个用于图形 网络的 r 包 它可以处理嵌套子图 Graphviz 做到了这一点 但只提供可
  • 如何在R中绘制仪表图表?

    如何在 R 中绘制以下图 Red 30 Yellow 40 Green 30 Needle at 52 所以这里有一个完整的ggplot解决方案 注意 从原始帖子中编辑 在仪表中断处添加数字指示器和标签 这似乎是OP在评论中所要求的 如果不
  • R data.table fread 使用不带标题的命名 colClasses(例如没有 col.names?)

    更新 2016 年 6 月 col names 已添加到 data table 1 9 6 所以问题已经结束 每个人都非常高兴 我想我现在可以将所有 read csv 调用转换为 fread 调用 而不必担心破坏 原问题 使用数据表1 9
  • 使用 R:如何创建带有日期的时间序列对象?

    我有一年中每小时采集的一系列值 是否可以创建一个保留小时和年份值的时间序列对象 我的代码使用股票价格第一列中的值 但不使用日期 stockprices ts lt ts stockprices 1 start 1 freq 168 您没有提
  • 为什么 data.table `:=` 的 knit 缓存失败?

    这在精神上与this https stackoverflow com q 15267018 1900520问题 但机制上一定不同 如果您尝试缓存knitr包含一个块data table 分配然后它的行为就好像该块尚未运行 并且后面的块看不到
  • 自定义 colorRampPalette 中的颜色条

    我定义了一个 colorRampPalette my colors colorRampPalette c light green yellow orange red 如何为其绘制颜色条 图例 项目 最好仅使用基本包 我正在寻找一个充满该颜色
  • 使用 igraph 将边缘属性显示为标签

    我在 R 中使用 igraph 进行网络分析 我想在图中的每条线上显示边缘属性 下面是一个例子 df lt data frame a c 0 1 2 3 4 b c 3 4 5 6 7 nod lt data frame node c 0
  • R中的不定积分

    我正在计算方程的不定积分 我将加速度计的数据通过可视化 C 程序输入到 R 中 然后就可以很简单地得出一个方程来表示加速度曲线 这一切都很好 但是我还需要计算撞击速度 根据我在高中时代的理解 我的加速度曲线的不定积分将产生速度方程 我知道执
  • Openxlsx 多次验证损坏输出文件

    我正在尝试添加多个验证并将公式添加到 Excel 文件 这是我使用的代码 library openxlsx fileTemplate lt New01 xlsx wbTemplate lt loadWorkbook fileTemplate
  • 在 R 中使用 gsub 删除尾随空格[重复]

    这个问题在这里已经有答案了 有没有人有一个技巧可以用 gsub 删除变量上的尾随空格 以下是我的数据示例 正如您所看到的 我在变量中同时包含尾随空格和嵌入空格 county lt c mississippi mississippi cany
  • Rstudio 命令历史记录

    这些天我经常使用 Rstudio 但最近注意到我的命令不再存储在历史记录中 我不知道这是从什么时候开始的 但可能是在安装最新版本时发生的 关于问题可能是什么的任何想法吗 Thanks 这是我们在 v0 93 73 中引入并在 v0 93 7
  • R:为什么 kable 不在 for 循环内打印?

    我正在使用 rmarkdown 和 Latex 编写报告 我需要使用打印一组表格knitr kable 但在 for 循环内时不会打印 这是我的代码 title project title author Mr Author date 201
  • S4 类 [(子集)带有附加参数的继承

    这是一个扩展在 R 中的访问器函数中使用 callNextMethod https stackoverflow com q 24875284 2752888 2017 03 25 更新 为了说明如何仅在加载方法时失败 但在构建的包中时不会失
  • 计算 R 中数据帧的每一行中特定值的连续出现次数

    我有一个data frame许多位置 这么多行 的变量的每月值 我想计算值为零的连续月份 即连续单元格 的数量 如果只是从左到右阅读 这很容易 但增加的复杂性是年底与年初是连续的 例如 在下面的缩短示例数据集中 用季节而不是月份 位置 1
  • 按列分组的数据帧上 R 中的行之间的差异

    我希望通过 app name 获得不同版本的计数差异 我的数据集如下所示 app name version id count difference 这是数据集 data structure list app name structure c

随机推荐

  • IntelliJ IDEA:如何修复损坏的字体显示?

    无法阅读该语言 怎么设置成英文呢 The issue is not with the language but with some broken font mapping on your system The workaround is t
  • Node.js + Azure SQL 数据库

    我正在挣扎微软的node js sql客户端 https github com WindowsAzure node sqlserver 我已经安装了它 使用 github 页面上的指南没有任何错误 并且一切在本地运行完美 但是当我使用 gi
  • 如何根据 HTML 从统计页面中提取玩家信息?

    我正在尝试使用 selenium 抓取网站的一些信息 下面是该网站的链接http www ultimatetennisstatistics com playerProfile playerId 4742 http www ultimatet
  • C语言中的宏(#define)

    我正在阅读hoard内存分配器的源代码 在gnuwrapper cpp文件中 有以下代码 define CUSTOM MALLOC x CUSTOM PREFIX malloc x 是什么意思CUSTOM PREFIX malloc x i
  • MPAndroidChart 条形图 - 如何对组之间具有随机 x 轴间隔的条形进行分组?

    我想制作一个条形图 其中每个数据点将 3 个不同的数据集分组在一起 如下所示 但是 我无法使用库提供的功能将条形图分组在一起groupBars方法 因为无论我为条目设置什么 x 值 它都会根据我在其参数中指定的间隔对条形进行分组 例如 如果
  • 镜头:新型变焦

    我有兴趣获得zooming我的 monad 变压器堆栈的功能定义如下 newtype Awesome a Awesome StateT AwesomeState ExceptT B ByteString IO a deriving Func
  • Python 将列表转换为集合,大 O

    感谢您的帮助 words Big list of words words set set words 当 n len words 时 我很难确定 set words 的复杂性是多少 是 O n 因为它在列表的所有项目上移动 还是 O l n
  • 如何让odeint成功?

    我是 python 初学者 目前使用 scipy 的odeint计算耦合的 ODE 系统 但是 当我运行时 python shell 总是告诉我 gt gt gt Excess work done on this call perhaps
  • 在 PHP 中将十六进制转换为图像?

    我正在开发通过以下方式与服务器通信的移动应用程序PHP Webservice 这是我第一次使用 PHP 我设法将数据上传到数据库 现在我需要发送图像以将其存储在 ftp 服务器中 为此我转换了image gt hex并从我的应用程序发送 服
  • 如何在安装时强制 Chrome 扩展上的键盘快捷键

    我正在尝试实现一个使用键盘快捷键触发事件的 Chrome 扩展 快捷方式在这里声明 commands sample suggested key default Ctrl I windows Ctrl I description Refres
  • emacs autoloaded 中保证自动加载功能的机制是什么

    我知道所有标有 Autoload 行的函数都将是自动加载函数 但问题是执行此 自动加载函数 的底层机制是什么 还有为什么当从 elpa 安装软件包时 会出现一个名为 XXX autoload elc 的编译文件 当您安装 Elpa 软件包时
  • Php变量存储字符串时的大小限制是多少?

    情况是这样的 我有一个 2Gb 的转储文件 名为myDB sql 它是一个转储文件 可删除现有数据库并创建一个带有视图和触发器的新数据库 所以我有字符串myDB OLD分布在许多行代码中 我想将这些字符串的出现次数更改为myDB NEW 我
  • Google reCAPTCHA、405 错误和 CORS 问题

    我正在使用 AngularJS 并尝试使用 Google 的 reCAPTCHA 我正在使用 显式呈现 reCAPTCHA 小部件 在我的网页上显示 reCAPTCHA 的方法 HTML 代码
  • 如何使用 ListView 呈现具有多个行跨列的数据表

    我需要在 html 表中显示数据库中的数据 我目前正在使用 ListView 控件 我希望最终的 HTML 表呈现如下所示的内容 其中某些行有一个rowspan属性大于一 原因是有些字段有几行信息 但对应同一个逻辑条目 例如 data da
  • 实现 Win32 消息循环并使用 P/Invoke 创建 Window 对象

    我的主要目标是纯粹使用以下方法实现正确的消息循环P Invoke http en wikipedia org wiki Platform Invocation Services能够处理 USB HID 事件的调用 当然 它的功能应该与以下代
  • vis.js - 如何运行 getSeed() 方法

    我正在使用 vis js 创建一些数据地图 在文档中它说 理想情况下 你尝试使用未定义的种子 重新加载 直到你满意为止 与布局并使用getSeed 确定种子的方法 然而 对于我的一生 我无法弄清楚如何 使用getSeed 方法 我认为它是一
  • 了解 Deferred.pipe()

    我一直在阅读有关 jQuery 中的 deferreds 和 Promise 的内容 但我还没有使用过它 除了方法管道之外 我已经很好地理解了一切 我实在没明白那是什么 有人可以帮助我了解它的作用以及它可以在哪里使用吗 我知道有一个问题的标
  • Angular2 - 多个组件中的“监视”提供程序属性

    我来自 NG1 环境 目前我正在创建具有所有可用功能的 NG2 应用程序 在提出这个问题之前 我正在探索 google 和 stackoverflow 的问题 但没有运气 因为 Angular 2 的 api 架构发展得如此之快 而且大多数
  • ASP.NET Web 部署失败;项目中不存在 AddScheduledJob

    我有一个包含两个 WebJobs 的 ASP NET 项目 其中一个 WebJobs 可以正常发布 但第二个 WebJobs 无法发布 并且收到以下错误消息 项目中不存在目标 AddScheduledJob 两个 WebJobs 都设置为
  • R - 根据多个条件匹配来自 2 个数据帧的值(当查找 ID 的顺序是随机时)

    嗨我有两个数据框 df1 data frame PersonId1 c 1 2 3 4 5 6 7 8 9 10 1 PersonId2 c 11 12 13 14 15 16 17 18 19 20 11 Played together