使用另一个表中的数据连接并覆盖一个表中的数据

2023-11-29

如何加入和覆盖数据似乎是一个常见的请求,但我尚未找到适用于整个数据集的优雅解决方案。

(注意:为了简化数据,我将仅使用 1 和 NA 来表示值和一小部分列,但实际上我有数百个具有不同值的列)。

我有一个数据表 (d1),在某些列和行中具有 NA 值。

library(data.table)
d1 = fread(
"r id v1 v2 v3
1  A  1  1  1
2  B  1  1  1
3  C  1 NA NA
4  D  1  1 NA
5  E  1 NA  1")[, r := NULL]

我还有另一个数据表 (d2),其中包含附加列以及 d1 中现有列中缺少的数据点。

d2 = fread(
"r id v2 v3 v4 v5
1  C  1  1  1  1
2  D  1  1  1  1
3  E  1  1  1  1")[, r := NULL ]

我基本上想用 d2 中的所有数据连接+覆盖 d1,当然要确保按 id 匹配行,按名称匹配列,如下所示。

> d12
  id v1 v2 v3 v4 v5
1  A  1  1  1 NA NA
2  B  1  1  1 NA NA
3  C  1  1  1  1  1
4  D  1  1  1  1  1
5  E  1  1  1  1  1

附加场景:我还想知道如果您只想更新 d1 中的 NA 值(即确保现有的非 NA 值不被覆盖),如何做到这一点。 (为了使其更容易可视化,我添加了同时包含 1 和 0 的新表)。

例如,如果我们有 d3

d3 = fread(
"r id v1 v2 v3
1  A  1  1  1
2  B  1  1  1
3  C  1  0 NA
4  D  1  1  0
5  E  1 NA  1")[, r := NULL ]

我们想加入 d2 并仅覆盖 NA 以获得:

> d32
  id v1 v2 v3 v4 v5
1  A  1  1  1 NA NA
2  B  1  1  1 NA NA
3  C  1  0  1  1  1
4  D  1  1  0  1  1
5  E  1  1  1  1  1

仅供参考,下面是解决此问题的其他一些帖子,但仅针对一两列。我正在寻找的解决方案应该允许一个表中的数据被另一个表中的许多(如果不是全部)列覆盖。

合并数据帧并覆盖值

合并两个数据框并替换R中的NA值

A 数据表基于 的解决方案将是首选,但也欢迎其他解决方案。


我认为采用长形式是最简单的:

md1 = melt(d2, id="id")
md2 = melt(d2, id="id")

然后你可以堆叠它们并获取最新值:

res1 = unique(rbind(md1, md2), by=c("id", "variable"), fromLast=TRUE)

我还想知道如果您只想更新 [ 中的 NA 值,如何做到这一点d3],即确保现有的非 NA 值不被覆盖。

您可以从更新表中排除行,md2,如果它们出现在md3:

md3 = melt(d3, id="id")

res3 = unique(rbind(md3, md2[!md3, on=.(id, variable)]), 
  by=c("id", "variable"), fromLast=TRUE)   

dcast如有必要,可用于返回宽格式,例如,dcast(res3, id ~ ...).

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

使用另一个表中的数据连接并覆盖一个表中的数据 的相关文章

  • 如何在 R 中的 for 循环内将值存储在向量中

    我正在开始使用 R 但我对以下问题感到非常沮丧 我试图将 for 循环内完成的某些计算的值存储到我之前定义的向量中 问题是如何进行索引 因为for循环迭代代码的次数取决于用户的输入 所以变量i不一定要从1开始 它可以从80开始 for举个例
  • 行对名称中具有特定模式的列求和

    我有一个像这样的数据表 DT lt ata table data table ref rep 3L 4L nb 12 15 i1 c 3 1e 05 0 044495 0 82244 0 322291 i2 c 0 000183 0 155
  • R ggplot 中的柯尔莫哥洛夫-斯米尔诺夫图

    我正在尝试在 r 中绘制 KS 图 一切似乎都很顺利 除了我只能使用颜色来可视化两个不同的样本而不是线型这一事实 我已经尝试过以下方法 sample1 lt SD13009 sample2 lt SD13009PB group lt c r
  • 更新 R6 对象实例中的方法定义

    如何更新 R6 类实例的方法定义 正如我所期望的 S3 使用当前的方法定义 对于 R5 参考类 我可以使用 myInstance myInstance copy 在 R6 中 我尝试了 myInstance myInstance clone
  • sapply - 保留列名称

    我试图总结数据集中许多不同列 变量 的平均值 标准差等 我已经编写了自己的汇总函数 以准确返回我需要和正在使用的内容sapply立即将此函数应用于所有变量 它工作正常 但是返回的数据帧没有列名 我似乎甚至无法使用列号引用重命名它们 也就是说
  • 在 RcppArmadillo 中将列向量乘以数值标量

    我在编译这个简单的程序时遇到一些麻烦c 代码使用Rcpp和RcppArmadillo包裹 采用以下简单示例 将矩阵的每一列乘以数值标量 code lt arma mat out Rcpp as
  • R在Windows平台Rstudio上打印data.frames中的UTF-8代码

    当数据框中存在UTF 8字符时 将无法正常显示 例如 以下内容是正确的 gt U6731 1 朱 但是当我将其放入数据框中并打印出来时 它是 gt data frame x U6731 x 1
  • 使用选定因子水平的值向 ggplot-barchart 添加水平线

    在这个情节中 df lt data frame factor as factor c rep A 3 rep B 3 Treatment c rep c A B C 2 values runif 6 0 1 ggplot df aes Tr
  • C# 数据表更新多行

    我如何使用数据表进行多次更新 我找到了这个更新 1 行 http support microsoft com kb 307587 my code public void ExportCSV string SQLSyntax string L
  • R:如何将字符/数字转为1,NA转为0?

    有没有一种简单的方法可以将列的字符 数字变为 1 将 NA 变为 0 这里有一些示例数据 我想将其应用于 3 4 structure list Item Code c 176L 187L 191L 201L 217L 220L Item x
  • 将维基百科中的表格加载到 R 中

    我正在尝试从以下 URL 将最高法院法官表加载到 R 中 https en wikipedia org wiki List of Justices of the Supreme Court of the United States http
  • 如何动态地将 sliderInput 添加到闪亮的应用程序中?

    使用闪亮 我上传一个 csv 文件 并根据列名称 我需要向 ui 添加滑块 sidebarPanel fileInput file1 Upload CSV File to Create a Model accept c text csv t
  • R 改变构面的顺序

    我正在尝试将方面的顺序从 BA SLG 更改为 SLG BA 我发现了与此类似的问题 但我认为我的解决方案可能不起作用 因为我已经在Excel中汇总了数据 因此 我的数据框可能会有所不同 无论如何 我尝试实现这个但无济于事 df2 lt f
  • rvest 函数 html_nodes 返回 {xml_nodeset (0)}

    我正在尝试抓取以下网站的数据框 http stats nba com game 0041700404 playbyplay http stats nba com game 0041700404 playbyplay 我想创建一个表格 其中包
  • 无法编译包“maps”

    当我安装 maps 包时 安装中出现警告 ld warning ignoring file Library Developer CommandLineTools SDKs MacOSX10 14 sdk usr lib libSystem
  • 是否有weighted.median()函数?

    我正在寻找类似形式的东西weighted mean 我通过搜索找到了一些解决方案 这些解决方案写出了整个函数 但希望有一些更用户友好的解决方案 以下软件包都有计算加权中位数的函数 aroma light isotone limma cwhm
  • R 中的数据框操作 - 将单元格向左移动并删除 NA

    我有一个数据框 其列由随机分布的值和 NA 组成 如下所示 a lt c S E NA S NA b lt c A NA M G K c lt c I NA NA NA L meh lt dataframe a b c 1 2 3 4 5
  • 使用data.table进行聚合

    经过 SO 用户的多次建议后 我终于尝试将我的代码转换为使用data table library data table DT lt data table plate paste0 plate rep 1 2 each 5 id rep c
  • 如何在R中分离两个图?

    每当我运行这段代码时 第一个图就会简单地覆盖前一个图 R中有没有办法分开得到两个图 plot pc title main abc xlab xx ylab yy plot pcs title main sdf xlab sdf ylab x
  • 闪亮井板宽度

    library shiny library shinydashboard ui lt dashboardPage dashboardHeader dashboardSidebar dashboardBody wellPanel tags d

随机推荐

  • 类型 将指数数转换为 int 或 float

    下面的代码 echo int 2e2 echo int 2e2 echo float 2e2 outputs 2 200 200 我不知道为什么 谢谢 2e2 is scientific notation meaning 2 102 200
  • 使用 invalidateOptionsMenu() 打开/关闭 NavDrawer 会导致 SearchView 上的 onRestore 调用和 onQueryTextChange 也被调用

    我有一个带有回调实现的 MainActivity DrawerListFragment Callback ItemListFragment Callbacks SearchView OnQueryTextListener 我还添加了一个 A
  • 我对drawable-hdpi 和drawable-mdpi 感到困惑

    我正在尝试让我的 Android 应用程序在手机类型设备和平板电脑上运行 对于布局 我有layout normal和layout large 并且我将xml文件放入每个布局中 似乎为每个设备选择了正确的布局 手机的layout normal
  • 芹菜组和链

    我需要对 Celery 中的一些任务进行排序 其中一些应该作为单个任务 一些应该并行工作 当组中的任务完成时 它应该传递下一个任务 chain task1 s task2 s group task3 s task4 s group task
  • 在C中反转单​​链表[重复]

    这个问题在这里已经有答案了 可能的重复 如何仅使用两个指针反转单链表 这是反转链表的 C 代码 但这并没有产生所需的输出 struct node temp prev while head gt next NULL temp prev hea
  • 混合模式 C++/CLI 应用程序未正确关闭 CLR

    我的混合模式 MFC 应用程序正在创建错误的内存泄漏 因为 CRT 没有时间在 MFC dll 关闭之前关闭 我有一个非常简单的小应用程序来显示问题 include
  • 具有本地化内容的 ASP.NET 密码恢复控件

    我正在使用 ASP NET 成员资格和登录控件开发一个简单的门户应用程序 我想使用 PasswordRecovery 控件发送包含忘记密码的电子邮件 但我的门户需要本地化 我有一个现有的内容管理系统 我正在从中提取本地化字符串 并且我想将
  • MySQL:ORDER BY RAND() 的替代方法

    我读过一些 MySQL 的替代品ORDER BY RAND 函数 但大多数替代方案仅适用于需要单个随机结果的情况 有谁知道如何优化返回多个随机结果的查询 例如 SELECT u id p photo FROM users u profile
  • Android 连接 2 个音频(wav 或 mp3)文件

    我必须连接 2 个或更多音频 wav 或 mp3 文件并获取一个音频文件 我怎样才能在安卓中做到这一点 提前致谢 下面的代码部分将按照已进行的选择数量进行工作 选择意味着选择了多少个文件 将两个 wav 文件放入 sdcard0 SSoft
  • 将 list_selector_background 用作 LayerList 可绘制的 ListView 项目

    如果我们使用 ListView 或 ExpandableListView 默认背景是 android drawable list selector background 我有一个 ExpandableListView 它显示按日期分组的数据
  • 在线程之间锁定图像时出现问题

    我需要在两个不同的线程中获取锁 以便访问 EmguCv 中的位图 从网络摄像头填充 我有一个 GetFrame 函数 可以查询相机并将其返回的内容放入 NET 位图中 我有两个线程需要访问此位图 一个需要写入位图并将位图分配给图片框 另一个
  • 在另一个表中引用 MySQL ENUM

    我创建了一个 SkillLevel 表 CREATE TABLE sklllevel Name varchar 20 NOT NULL level enum No Experience Beginner Expert Advisor DEF
  • SQL 排名功能是否应被视为“谨慎使用”

    这个问题源于关于是否在数据库中使用SQL排名功能的讨论 特殊案例 任何常见的 RDBMS 都包含一些排名功能 即其查询语言具有以下元素 TOP n ORDER BY key ROW NUMBER OVER ORDER BY key or O
  • 在 Git 中,如何查看和管理不在分支中的提交?

    提交不一定在分支中 那么如何查看和管理这些提交呢 另外 是否可以从 gitk 查看这些提交 多谢 PS 为了让事情更清楚 这里有一个例子 git init git commit touch toto git add toto git com
  • Google Dataflow 挂起且没有日志

    当我跑步时WordCount 作业示例从带有 DataflowPipelineRunner 的 Dataflow 文档来看 它启动了工作线程 然后以 正在运行 状态挂起 最后两条状态消息 Jan 29 2016 22 05 50 S02 b
  • 在ggplot中将某一类别的颜色设为灰色?

    试图将这一组设置为 未知 灰色 并在图例中使用灰色键 data lt fread data path bgrd lt data data pop Unknown ref lt data data pop Unknown p lt ggplo
  • 在 JSON 中搜索对象

    widget debug on window title Sample Konfabulator Widget name main window width 500 height 500 image src Images Sun png n
  • 使用 CFLocation - CF9 重定向到新选项卡

    有没有办法使用 CFLocation 将用户重定向到新窗口 据我所知你不能使用target blank在 CFLocation 中 还有其他方法吗 这是我的代码
  • 如何在矩阵的每一行上向量化此操作

    我有一个矩阵充满TRUE FALSE值 我试图找到第一个的索引位置TRUE每行的值 或返回NA如果没有TRUE行中的值 以下代码完成了工作 但它使用了apply call 我相信这只是 for 循环的包装 我正在处理一些大型数据集 但性能受
  • 使用另一个表中的数据连接并覆盖一个表中的数据

    如何加入和覆盖数据似乎是一个常见的请求 但我尚未找到适用于整个数据集的优雅解决方案 注意 为了简化数据 我将仅使用 1 和 NA 来表示值和一小部分列 但实际上我有数百个具有不同值的列 我有一个数据表 d1 在某些列和行中具有 NA 值 l