如何在 R 中比较两个数据框/表并提取数据?

2023-11-27

在尝试提取下面两个数据帧之间的不匹配项时,我已经成功创建了一个新的数据帧,其中不匹配项被替换。
我现在需要的是不匹配的列表:

dfA <- structure(list(animal1 = c("AA", "TT", "AG", "CA"), animal2 = c("AA", "TB", "AG", "CA"), animal3 = c("AA", "TT", "AG", "CA")), .Names = c("animal1", "animal2", "animal3"), row.names = c("snp1", "snp2", "snp3", "snp4"), class = "data.frame")
# > dfA
#      animal1 animal2 animal3
# snp1      AA      AA      AA
# snp2      TT      TB      TT
# snp3      AG      AG      AG
# snp4      CA      CA      CA
dfB <- structure(list(animal1 = c("AA", "TT", "AG", "CA"), animal2 = c("AA", "TB", "AG", "DF"), animal3 = c("AA", "TB", "AG", "DF")), .Names = c("animal1", "animal2", "animal3"), row.names = c("snp1", "snp2", "snp3", "snp4"), class = "data.frame")
#> dfB
#     animal1 animal2 animal3
#snp1      AA      AA      AA
#snp2      TT      TB      TB
#snp3      AG      AG      AG
#snp4      CA      DF      DF

为了澄清不匹配的情况,这里将它们标记为 00:

#      animal1 animal2 animal3
# snp1      AA      AA      AA
# snp2      TT      TB      00
# snp3      AG      AG      AG
# snp4      CA      00      00

我需要以下输出:

structure(list(snpname = structure(c(1L, 2L, 2L), .Label = c("snp2", "snp4"), class = "factor"), animalname = structure(c(2L, 1L, 2L), .Label = c("animal2", "animal3"), class = "factor"), alleledfA = structure(c(2L, 1L, 1L), .Label = c("CA", "TT"), class = "factor"), alleledfB = structure(c(2L, 1L, 1L), .Label = c("DF", "TB"), class = "factor")), .Names = c("snpname", "animalname", "alleledfA", "alleledfB"), class = "data.frame", row.names = c(NA, -3L))
#  snpname animalname alleledfA alleledfB
#1    snp2    animal3        TT        TB
#2    snp4    animal2        CA        DF
#3    snp4    animal3        CA        DF

到目前为止,我一直在尝试从我的数据中提取更多数据lapply我用它来将不匹配项替换为零,但没有成功。我也尝试编写 ifelse 函数但没有成功。希望你们能在这里帮助我!

最终这将针对维度为 100K x 1000 的数据集运行,因此效率是一个优势


这个问题有data.table标签,所以这是我使用这个包的尝试。第一步是将行名称转换为列,如下所示data.table不喜欢这些,然后转换为长格式rbind为每个数据集设置一个 id,查找其中存在多个唯一值并转换回宽格式

library(data.table)  
setDT(dfA, keep.rownames = TRUE) 
setDT(dfB, keep.rownames = TRUE)   

dcast(melt(rbind(dfA, 
                 dfB, 
                 idcol = TRUE), 
           id = 1:2
           )[, 
             if(uniqueN(value) > 1L) .SD, 
             by = .(rn, variable)], 
      rn + variable ~ .id)

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

如何在 R 中比较两个数据框/表并提取数据? 的相关文章

随机推荐

  • 如何将cognito用户信息传递给lambda?

    我正在开发基于API网关和Lambda的应用程序 我将 POST subscribe 配置为 AWS IAM 所以现在它无法直接访问 但我可以通过 Cognito 身份验证访问 API 现在的问题是我的 Lambda 不知道谁是 API 调
  • 在Python3中正确地将字节转换为字符串并返回?

    给定一个随机字节 即不仅仅是数字 字符 我需要将其转换为字符串进而回到初始字节而不丢失信息 这似乎是一项基本任务 但我遇到了以下问题 假设 rnd bytes b w x12 x96 xb8 len rnd bytes prints 4 现
  • 使用 CAShapeLayer 和 UIBezierPath 剪辑遮罩 uiview

    我在使用 CAShapeLayer UIBezierPath 剪切视图时遇到问题 我想剪切内容 但最终得到了 UIBezierPath 的笔画 框架 这是我的代码 UIBezierPath path2Path UIBezierPath be
  • 将字符串解析为日期时间,同时考虑 pandas 中的 AM/PM

    我正在尝试解析这种格式的字符串 2018 07 07 04 AM 使用 strftime 格式转换为 pandas 日期时间 但是 在我看来 该格式无法识别之间的区别AM and PM 这是我尝试过的 pd to datetime 2018
  • 如何检查某个目录是否位于 Bash 的路径上? [复制]

    这个问题在这里已经有答案了 可能的重复 Bash 检测用户的路径中是否有特定目录 给定一个目录 如何确定它是否在 unix PATH 上 正在寻找 shell 脚本 谢谢 凯文 你可以写 if PATH directory you want
  • 如何更改 ggplot 中的标签(图例)?

    我的代码如下 我想更改ggplot的标签 但R总是提醒我 Error in unit tic pos c mm x and units must have length gt 0 我应该怎么办 ggplot mat aes x sales
  • 如何唤醒休眠的 pthread?

    我正在用 C 编写一个程序 我注意到它获得了许多线程 其目的是每隔一段时间做一些事情 其中 有 3 或 4 个 我决定通过编写一个调度程序服务来重构 使用这些线程的其他地方可以订阅该服务 这应该将我随时运行的额外事件线程的数量减少到一个 我
  • 将 TOP 与 GROUP BY 一起使用

    带桌子table1像下面这样 flight orig dest passenger bags 1111 sfo chi david 3 1112 sfo dal david 7 1112 sfo dal kim 10 1113 lax sa
  • std::throw_with_nested 需要 C++11 中的多态类型吗?

    为什么不能编译 尝试使用 Clang 3 4 2 和 GCC 版本 4 7 4 4 8 3 和 4 9 1 include
  • 从外部 div 滚动 div

    查看下面的小型 html 结构示例以了解上下文 看看这个fiddle问题的示例 对小提琴用户的简短说明 向左滚动 垂直滚动条不可见 向右滚动 垂直可见 我希望垂直滚动条始终可见 要求 标题必须保持固定 滚动时可见 长解释 我有一个带有固定标
  • C++:模板和单例模式

    碰巧我需要臭名昭著的单例模式 更好的是 它发生了 所以我需要臭名昭著的 C 模板与该模式的结合 那么 让我烦恼的是 template
  • 事件调度程序应每月执行一次

    我的机器上安装了 Win XP 操作系统和 XAMPP 我需要在每月第一天的凌晨 12 00 00 执行我的事件 调度程序 意思是每个月的1号 例如 1 月 1 日 2 月 1 日 3 月 1 日 和 我还需要在同一事件中调用存储过程 我想
  • 如何在生产中管理 ASP.NET SQL 成员角色/用户?

    如何在生产计算机上设置 asp net sql 成员资格角色 成员资格提供程序 我正在尝试设置 BlogEngine NET 所有文档都说要使用 Visual Studio 中的 ASP NET 网站管理工具 但这在生产计算机上不可用 我是
  • ExtJS按钮样式工具栏[重复]

    这个问题在这里已经有答案了 我想知道是否可以将按钮放入面板的工具栏中 但让它保留按钮的外观 就好像它只是在普通面板中一样 例如 我希望按钮看起来像这样 然而 它看起来像这样 非常感谢 EDIT 创建工具栏的代码 xtype toolbar
  • 稳健的多边形法线计算

    是否有一个好的鲁棒算法来计算凸多边形的法向量 当然是3D 对于三角形 这很容易 取三角形的两条边并计算叉积 vec3 u point 0 point 1 v point 0 point 2 vec3 n normalize cross u
  • 如何将时间戳列映射到JPA类型?

    我正在使用 玩 1 2 4 和 PostgreSQL 9 1 我创建了一个表created at列 类型 timestamp without time zone 它的默认值为now 当我使用该表的实体类获取数据时 问题就出现了 这creat
  • Magento:缩小 HTML 输出?

    magento中是否有任何文件可以输出所有html 我想缩小所有 html 输出 Magento 使用响应对象发送所有输出 所有的输出都会添加到这个对象中 然后它的sendResponse方法被调用 如果你想改变输出 设置一个监听器http
  • UTF-8百分比编码和python

    我试图让 python 给我百分比编码的字符串 我正在与之交互的 API 我认为它使用的是百分比编码的 UTF 8 为 提供 c3 ae 然而 python 的 urllib quote 给出 3F import urllib mystri
  • Java 相当于 Kotlin 中的 arrayof()/ listof()/ setof()/ mapof()

    我只是想知道java是否有像kotlin中那样的arrayof listof setof mapof 等价物 如果没有 有什么方法可以类似地工作吗 我发现它们与java非常不同 顺便说一句 intArrayOf arraylistof ha
  • 如何在 R 中比较两个数据框/表并提取数据?

    在尝试提取下面两个数据帧之间的不匹配项时 我已经成功创建了一个新的数据帧 其中不匹配项被替换 我现在需要的是不匹配的列表 dfA lt structure list animal1 c AA TT AG CA animal2 c AA TB