如何为 r 中两个数据帧之间的匹配观察值分配相同的唯一 ID?

2024-04-10


当我有两个(或更多)数据框并希望为每个数据集中和跨两个数据集的每个匹配观察分配唯一的 ID 时,我有一个实际问题,例如:

#1. Create dataframe df1:

a1 <- c(1, 1, 1, 1, 2, 2, 2, 2, 1, 1)
b1 <- c(1, 5, 3, 2, 3, 4, 5, 1, 5, 2)
c1 <- c("white", "red", "black", "white", "red", 
        "white", "black", "silver", "red", "green")
df1 <- data.frame(a1, b1, c1)
df1

   a1 b1     c1
1   1  1  white
2   1  5    red
3   1  3  black
4   1  2  white
5   2  3    red
6   2  4  white
7   2  5  black
8   2  1 silver
9   1  5    red
10  1  2  green

#2. Create dataframe df2:

a2 <- c(2, 2, 1, 1, 2, 2, 2, 2, 2, 2)
b2 <- c(3, 1, 3, 2, 1, 3, 4, 5, 3, 5)
c2 <- c("black", "blue", "black", "white", "silver", 
        "green", "green", "red", "blue", "white")
df2 <- data.frame(a2, b2, c2)
df2

   a2 b2     c2
1   2  3  black
2   2  1   blue
3   1  3  black
4   1  2  white
5   2  1 silver
6   2  3  green
7   2  4  green
8   2  5    red
9   2  3   blue
10  2  5  white

#3. Assign unique IDs to each observation in df1:

library(data.table)
df1.2 <- data.table(df1, key="a1,b1,c1") 
df1.2[, id:=.GRP, by=key(df1.2)]
df1.2 <- as.data.frame(df1.2)
df1.2

   a1 b1     c1 id
1   1  1  white  1
2   1  2  green  2
3   1  2  white  3
4   1  3  black  4
5   1  5    red  5
6   1  5    red  5
7   2  1 silver  6
8   2  3    red  7
9   2  4  white  8
10  2  5  black  9

#4. The problematic part!! Assign identical unique IDs to matching observations of df2 as compared to df1.2 
#and assign other unique IDs to all other non-matching obs of df2. 
#Name the resulting dataframe as df2.2 
#My expected result will ideally look as follows:

df2.2

   a2 b2     c2 id
1   2  3  black 10 
2   2  1   blue 11
3   1  3  black  4
4   1  2  white  3
5   2  1 silver  6
6   2  3  green 12
7   2  4  green 13
8   2  5    red 14
9   2  3   blue 15
10  2  5  white 16

任何有关如何获取 df2.2 的帮助将非常感激。谢谢。


解决这个问题的一个简单方法是创建一个散列:

library(dplyr)
library(digest)

df1 %>%
  rowwise() %>%
  do( data.frame(., id=digest( paste(.$a1,.$b1,.$c1), algo="md5"),
                   stringsAsFactors=FALSE)) %>% ungroup()

df2 %>%
  rowwise() %>%
  do( data.frame(., id=digest( paste(.$a2,.$b2,.$c2), algo="md5"),
               stringsAsFactors=FALSE)) %>% ungroup()

这将产生以下结果df1:

   a1 b1     c1                               id
1   1  1  white b86fbb78b27f7db2ee50af2d68cce452
2   1  5    red 68d47f544832989834517630e4a2764c
3   1  3  black 724e37192140cb2009cf3d982f2be1e4
4   1  2  white f731b8b38255b8c312543283f8e1c634
5   2  3    red 2d50b86902056a51faad04d2c566faf2
6   2  4  white 9396667cd51d1e1b61b0b22a7767d3d9
7   2  5  black 9ba1f3e04c61c006d3c5382fcad098e6
8   2  1 silver 38dcd29d200c8b33cd38ac78ef9dd751
9   1  5    red 68d47f544832989834517630e4a2764c
10  1  2  green 7d9b1aadfd79de142b234b83d7867b9b

以及以下内容df2:

   a2 b2     c2                               id
1   2  3  black d285febc8ab08e99b11609b98f077e66
2   2  1   blue bfa0405276406ac4bc596daf957dfa11
3   1  3  black 724e37192140cb2009cf3d982f2be1e4
4   1  2  white f731b8b38255b8c312543283f8e1c634
5   2  1 silver 38dcd29d200c8b33cd38ac78ef9dd751
6   2  3  green 67eefe9ee2d82486ded30a268289296b
7   2  4  green d773f58cf144eab15ef459e326494a2f
8   2  5    red 0724318a9f59d3960edfe4e90f9c4eff
9   2  3   blue 6883420cc137ba45b773f642176e9ce6
10  2  5  white 5dea9e63b5fbfb31fb81260cb5a5f41c
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为 r 中两个数据帧之间的匹配观察值分配相同的唯一 ID? 的相关文章

  • 如何获取R中的脚本路径? [复制]

    这个问题在这里已经有答案了 可能的重复 Rscript 确定执行脚本的路径 https stackoverflow com questions 1815606 rscript determine path of the executing
  • 带插入符的主成分分析

    我正在使用 Caret 的 PCI 预处理 multinomFit lt train LoanStatus train method multinom std TRUE family binomial metric ROC thresh 0
  • 在 R 中将多个回归表输出到 Word 文档的多个页面中

    我的目标是创建一个多页 Microsoft Word 文档 在连续页面上包含许多格式化回归表输出 理想情况下 这可以使用 R Markdown 来完成 我很幸运地使用Word在Word中制作了格式良好的回归表sjPlot tab model
  • 从 R 运行 powershell 命令:表达式或语句中出现意外标记

    我尝试了以下命令 在 powershell 窗口中有效 system powershell command Get ChildItem Filter html Where Object LastWriteTime ge 11 12 2021
  • 在数据帧中的几行上提取具有匹配模式的 id

    这是我正在处理的数据框的示例 id string 1 no 1 yes 1 yes 2 no 2 yes 3 yes 3 yes 3 no 我想提取id为此最后两行包含字符串 yes 对于列string 所以结果是 id string 1
  • 将 Fig.cap 设置为 options$label

    如何以编程方式在knitr hook 中设置图形标题 如果没有明确定义 我想将图形标题设置为块标签 我已经阅读了knitr文档options http yihui name knitr options options http yihui
  • 使用 rollend 滚动 data.table

    我无法获取roll Inf定义时工作rollends FALSE When rollends未设置或设置为TRUE 我看到了预期的结果 我将不胜感激任何建议 library data table dt1 data table Date se
  • ggplot for 循环输出所有相同的图表

    我编写了一个 for 循环 它遍历数据帧的列并使用 ggplot 为每列生成一个图表 问题是输出的图表都是相同的 它们都是最后一列的图表 我使用的代码是 library gridExtra library ggplot2 test1 lt
  • 删除 ggplot 地图/choropleth 中的边框线

    我想删除 ggplot 中生成的等值线区域之间的线 我的问题是由一张非常大的地图引起的 其中包含非常非常小的区域 人口普查区块组 这些区域数量如此之多 以至于鉴于边界的密度 不可能看到填充形状的颜色 我在 Mac 上使用更新后的 RStud
  • 如何为每个分组元素选择随机的非连续日期?

    我目前正在尝试为每个分组列选择非连续日期 换句话说 我有以下数据框 我基本上想group by Site 然后为每个分组站点仅保留 3 个随机非连续日期 例如 如果 HP37P1B 的日期对应于 3 月 12 日 3 月 13 日 3 月
  • 将第一行粘贴到列表中的列名称

    我有 68 个数据文件 全部具有相同的标识符 但具有不同的指示符 我将这些单独的文件转换为一个列表 其中每个数据框作为一个单独的元素 每个数据框的第一行是年份 我想将其粘贴到列名称中 我希望能够用 分隔它 例如 现在列名称为 Arbeits
  • 多维数组到数据框

    R 中的以下问题对你们中的许多人来说可能看起来很简单 但由于我对此相对较新 如果您能帮助我 那将非常有帮助 我想本质上编写一个多维 3 个维度 数组作为我可以更轻松地操作的数据框 我正在处理 1891 年 1 月 1 日至 2015 年 1
  • 连接标签文本和 tmap 图中点的线

    我正在使用形状文件绘制 tmap 绘图 并且我想在形状文件上绘制几个具有长纬度坐标的点 我的绘图工作得很好 但是地图上有太多点 这意味着不同点的标签文本是重叠的 并且一般来说不是特别清晰 here s what the plot curre
  • 当其长度不是所需总长度的倍数时重复向量

    我有一个 1666 行的数据框 我想添加一列 其中包含重复序列1 5与使用cut 进行交叉验证 它看起来像这样 Y x1 x2 Id1 1 15 3 6 1 0 1 1 2 2 2 0 05 3 3 3 0 45 2 8 4 1 85 3
  • 在 R 闪亮应用程序中评级星星

    我正在尝试向我闪亮的应用程序添加一些元素 以使其看起来更好 因此 我正在使用新的shiny semantic包允许以简单的方式添加语义 UI 元素 人们可以在这里找到闪亮的语义元素的示例 http demo appsilondatascie
  • 按因素分层抽样

    我有一个 1000 行的数据集 其结构如下 device geslacht leeftijd type1 type2 1 mob 0 53 C 3 2 tab 1 64 G 7 3 pc 1 50 G 7 4 tab 0 75 C 3 5
  • 关于使用outer()和用户定义函数的简单问题?

    gt fun1 lt function x y x y gt outer seq 1 5 length 5 seq 6 10 length 5 fun1 1 2 3 4 5 1 7 8 9 10 11 2 8 9 10 11 12 3 9
  • fread 的填充选项

    假设我有这个 txt 文件 AA 3 3 3 3 CC ad 2 2 2 2 2 ZZ 2 AA 3 3 3 3 CC ad 2 2 2 2 2 With read csv I can gt read csv linktofile txt
  • tidyr:在函数内使用 mutate

    我想使用 tidyverse 中的 mutate 函数来基于旧列创建一个新列 仅使用数据框和字符串 代表列标题 作为输入 我可以在不使用 tidyverse 的情况下让它工作 参见下面的函数 f 但我想使用 tidyverse 让它工作 参
  • ggplot 中的 Geom_area 顺序

    我的样本队列数据在绘制时未进行颜色编码或按正确的时间顺序显示ggplot 以下代码用于生成绘图 library ggplot2 blues lt colorRampPalette c lightblue darkblue p lt ggpl

随机推荐

  • JavaFX 场景的显示随机延迟

    我创建了一个 JavaFX 应用程序 在 Ubuntu Java SE 运行时环境 版本 1 8 0 131 b11 上运行 并制作了一个简单的测试应用程序 public class DelayedSceneApplication exte
  • Angular 2 模拟响应不起作用

    我有以下 Angular 2 测试 tslint disable no unused variable import provide from angular core import MockBackend from angular htt
  • Pyinstaller 无法执行脚本 pyi_rth_pkgres

    I converted the py script to exe using pyinstaller but when I try to run the exe I got this How can I fix it 您必须告诉 pyins
  • 从文件express js 提供 json

    新手要表达的是 我有一个包含 db json 文件的文件夹 并且每 11 秒就会被新的 db json 替换 让express js 提供服务以便在 api 调用上显示新内容的最佳方法是什么 这是我到目前为止所拥有的 const expre
  • 具有多重身份的B2C用户

    在 Azure B2C 中 有多个身份提供商 在本示例中 我将使用本地帐户和 Google 帐户 新用户使用电子邮件地址注册本地帐户 电子邮件受保护 cdn cgi l email protection 他们使用该网站 下次返回时 他们决定
  • Lucene 中跨多个字段的重复值的影响

    在 lucene 索引中的多个字段中重新索引相同的值会产生什么影响 这个想法是 某人的名字是他们的名字和一般详细信息的一部分 所以我想将该值索引到多个字段中 Ted Bloggs 我可能会索引如下 Field Value firstName
  • 删除 SQLPLUS 中不需要的/额外的数据

    我正在通过批处理文件运行一个文件 批处理文件 sqlplus admin admin SERVER abc sql gt output txt SQL 文件 abc sql set PAGESIZE 1000 set LINESIZE 55
  • Symfony POST 变量始终为空

    这是我的 Symfony 控制器 class MyPageController extends Controller public function indexAction Request request postData request
  • 如何使用“setInterval()”每秒更新时间而不使时间每秒闪烁?

    我正在使用一个下拉列表 该列表使用时刻时区显示不同的时区 例如 当您单击标有 est 的下拉列表时 它将显示东部时间的时间 当您单击 cst 时 将显示 cst 时间 依此类推 无论如何 我遇到的问题是 我使用setInterval upd
  • Magento:设置集合限制

    我试图找出的问题是如何对集合设置限制 我在 Google 上找到的答案仅适用于具有 setPage pageNum pageSize 的目录 这对任何其他集合都不起作用 请参阅下面的答案 做这件事有很多种方法 collection Mage
  • 记录执行的java代码的行数

    我正在编写 PHP Web 应用程序的一部分 将在高中错误查找竞赛中使用 用户必须在给定的 Java 程序中查找错误 作为其中的一部分 当 Java 程序执行时 我们希望突出显示已执行代码的 Java 程序源代码行 为此 我们需要的是已执行
  • Google Cloud 上的一个项目下是否可以拥有多个聊天机器人

    最近 我用 DialogFlow 构建聊天机器人的项目空间用完了 我不认为我在 Google Cloud 上的项目中使用了最佳标准 任何提示都很棒 而且由于我尝试创建一个新的聊天机器人 它会告诉我项目空间不足 是否可以将这些聊天机器人放在同
  • 如何从匹配的几何效果中删除/控制淡入淡出效果?

    我有一个测试代码来显示这个问题 当我使用matchedGeometryEffect时 matchedGeometryEffect向渲染结果添加了不希望的淡入淡出效果 所以我喜欢删除这种淡入淡出效果甚至控制它 当我将视图颜色从一种颜色更改为另
  • 需要一些帮助来理解注解 - Spring 注解

    我正在尝试学习 Spring 和 Hibernate 并且我真的很难理解注释及其工作原理 我在互联网上看到的大多数示例都是基于注释的示例 因此我需要先了解注释如何工作 然后才能学习 Spring 或 Hibernate 我知道它们是什么以及
  • Android Visualizer 实现崩溃

    我正在尝试实现 Android Visualizer 类 我已经查找了其他问题线程 但仍然遇到致命错误 在我看来 这一切都应该正常工作 无论出于何种原因 AVD 不断崩溃 首先 我正在使用权限
  • 表单提交后无法清除输入值

    好吧 我已经尝试了我能找到的所有建议 但在提交表单和淡出后这些值仍然存在 如果有人有建议
  • 我可以登录 PayPal Sandbox 测试帐户,但无法进入个人资料或设置

    在从 Chrome 中删除 PayPal cookie 之前 我无法登录 PayPal 开发者帐户 这允许我登录 但单击 个人资料 下拉列表中的 个人资料 或 设置 会出现一个错误页面 显示 请登录以使用 PayPal 沙盒功能 再次登录并
  • 如何将页脚和页眉与 wkhtmltopdf 一起使用?

    我遇到了一种情况 必须在生成的 PDF 打印计数中使用页脚和页眉 CSS 解决方案仅适用于首页 我发现的唯一信息是 WKPDF 根本不支持它 但这可以追溯到 2009 年 所以有些东西可能已经改变了 有人成功做到过吗 谢谢 Wkhtmlto
  • ruby regex - 如何匹配所有内容直到字符 -

    给定一个字符串如下 randomstring1 randomstring2 3df83eeff2 我如何使用 ruby 正则表达式或其他一些 ruby rails 友好的方法来查找第一个破折号之前的所有内容 在上面的例子中 这将是 随机字符
  • 如何为 r 中两个数据帧之间的匹配观察值分配相同的唯一 ID?

    当我有两个 或更多 数据框并希望为每个数据集中和跨两个数据集的每个匹配观察分配唯一的 ID 时 我有一个实际问题 例如 1 Create dataframe df1 a1 lt c 1 1 1 1 2 2 2 2 1 1 b1 lt c 1