根据一组条件将数据框中的值替换为其他数据框中的值

2024-01-20

在 df1 中,我需要将 msec 的值替换为 df2 中的相应值。

df1 <- data.frame(ID=c('rs', 'rs', 'rs', 'tr','tr','tr'), cond=c(1,1,2,1,1,2), 
block=c(2,2,4,2,2,4), correct=c(1,0,1,1,1,0), msec=c(456,678,756,654,625,645))

df2 <- data.frame(ID=c('rs', 'rs', 'tr','tr'), cond=c(1,2,1,2), 
block=c(2,4,2,4), mean=c(545,664,703,765))

在 df1 中,如果correct==0,然后参考df2与匹配值ID, cond, and block。将值替换为msec in df1与相应的值mean in df2.

例如,df1 中的第二行有correct==0。所以,在df2找到对应的行,其中ID=='rs', cond==1, block==2并使用平均值 (mean=545) 来替换 msec 的值 (msec=678)。请注意,在 df1 中,ID、block 和 cond 的组合可以重复,但每个组合在 df2 中仅出现一次。


使用data.table包裹:

# load the 'data.table' package
library(data.table)

# convert the data.frame's to data.table's
setDT(df1)
setDT(df2)

# update df1 by reference with a join with df2
df1[df2[, correct := 0], on = .(ID, cond, block, correct), msec := i.mean]

这使:

> df1
   ID cond block correct msec
1: rs    1     2       1  456
2: rs    1     2       0  545
3: rs    2     4       1  756
4: tr    1     2       1  654
5: tr    1     2       1  625
6: tr    2     4       0  765

注:以上代码会更新df1而不是创建一个新的数据帧,这样更节省内存。

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

根据一组条件将数据框中的值替换为其他数据框中的值 的相关文章

随机推荐

  • 用于按分隔符分割字符串的 mySQL 存储过程

    我正在编写一个存储过程 它将传递的字符串分解为 传递分隔符并返回结果的第 n 个元素 n 已通过 也 所以这就是我想出的 CREATE PROCEDURE SPLIT IN strToSplit text IN strDelimiter v
  • 调整具有宽度限制的框架大小

    我有简单的形式TForm1有 2 个面板 首先与Align alLeft第二个是Align alClient和空框TFrame1 当我将以下过程添加到表单中时 一切正常 procedure TForm1 FormCreate Sender
  • 禁用链接以停止 JQuery 中的双击

    我如何禁用所有链接button点击一次后上课 我希望能够在一个地方完成此操作 而不必单独更改所有这些 有什么想法吗 到目前为止我得到了这个 a button click function this attr disabled disable
  • 使用指向非静态成员函数的指针实现回调

    假设我正在开发一个杂货清单管理器 我有一扇窗户 上面有GroceryListDisplay 这是一个显示购物清单上的商品的控件 杂货数据由程序的模型组件存储在GroceryStorage class 要将保存的文件加载到我的程序中 必须使用
  • Flutter SharedPreferences如何加载所有保存的?

    如何加载 SharedPreferences 中保存的所有内容 我保存了很多布尔值 需要将所有布尔值加载到列表中 这就是我保存的方式 SharedPreferences sharedPreferences bool isfavorit ov
  • T-SQL 分割字符串

    我有一个 SQL Server 2008 R2 列 其中包含一个需要用逗号分隔的字符串 我在 StackOverflow 上看到了很多答案 但没有一个在 R2 中有效 我已确保我对任何拆分函数示例具有选择权限 非常感谢任何帮助 我之前用过这
  • R中Box Cox变换故障排除(需要使用for循环或apply)

    请在下面找到我的数据 行是疾病组 0 对照 1 溃疡性结肠炎和 2 克罗恩病 列是基因表达值 structure c 5 54312e 05 5 6112e 06 9 74312e 05 1 3612e 06 1 29312e 05 7 2
  • R 中 nlme 线性混合模型中相互作用显着性的检验

    I use lme函数在nlme用于测试因子水平的 R 包items与因子水平有显着的交互作用condition 因素condition有两个级别 Control and Treatment 以及因子items有 3 个级别 E1 E3 我
  • 如何在ubuntu-18.04上安装nexus

    我需要帮助在 ubuntu 18 04 上安装 nexus oss 我在互联网上找不到任何 apt get 命令 我尝试在 sudo apt get search nexus 中搜索nexus包 但无法获得正确的nexus版本包 我在网上浏
  • Bootstrap Affix 插件内存泄漏

    这些行 https github com twbs bootstrap blob master js affix js L19 L21在引导程序词缀插件中似乎会导致内存泄漏 因为窗口获取对从未释放的词缀实例的引用 作为解决方法 我使用此代码
  • OpenAPI 生成器的 Gradle 配置

    当将 OpenAPI 生成器与 Gradle 一起使用时 我希望将性别源发送到其他源生成器插件使用的标准目录 类似 Maven 生成源的东西 到目前为止 我还无法做到这一点 特别是限制生成 Java 源类而不是整个 原型项目 看来 Open
  • 在 AVX 寄存器内循环字节的有效方法

    摘要 tl 博士 除了进行 2 倍移位并将结果混合在一起之外 还有什么方法可以按位旋转 YMM 寄存器中的字节 使用 AVX 对于 YMM 寄存器中的每 8 个字节 我需要向左旋转 7 个字节 每个字节都需要比前一个字节向左旋转一位 因此
  • 如何为 SASS 变量中的 fs-* 类自定义 Bootstrap 5 字体大小

    如何更改 Bootstrap 5fs 上课于sass 因为在文档 https getbootstrap com docs 5 0 utilities text variables仅显示如何修改h 类如h5 font size 但不是fs c
  • Spring MVC:如何修改从控制器发送的json响应

    我已经使用如下控制器构建了一个 json REST 服务 Controller RequestMapping value scripts public class ScriptController Autowired private Scr
  • 64 位 Windows API:C/C++“DWORD”的大小是多少?

    我只安装了 32 位 Windows 因此我无法亲自验证这一点 如果我没理解错的话 微软API中各个地方使用的DWORD都是参考原来的16位字 和现在的硬件架构无 关 那么 即使我最终编译并链接我的应用程序以在 64 位 Windows 中
  • 有没有办法从 UITableView 中删除分隔线?

    我正在寻找一种在普通模式下完全删除 UITableView 中的分隔线的方法 这是在分组中自动完成的 但这也会以难以测量的方式改变表格的尺寸 我已将分隔线颜色设置为 colorClear 但这并不能完全解决问题 当我尝试在单元格中绘制自定义
  • 将文本文件中的数据读入 VBA 数组

    我有以下 VBA 代码 Sub read in data from txt file Dim dataArray As String Dim i As Integer Const strFileName As String Z sample
  • 使用 Common Lisp 进行排序时出现意外的列表重复

    编辑 解决方案是将第一个 let 形式中的 1 替换为 list 1 这是因为我试图修改文字数据 谢谢您的帮助 我会投赞成票 但显然你需要 15 声望 这是我在这个网站上的第一篇文章 我正在解决一些欧拉计划 https projecteul
  • 如何结合Flyway处理不在序列中的分支的合并

    我刚刚遇到了以下情况 测试服务器当前正在运行 Flyway 版本 1 V1 每当有任何内容推送到测试服务器上时 测试服务器都会自动更新 包括 Flyway 脚本 develop branch 开发人员决定开始在分支上开发新功能feature
  • 根据一组条件将数据框中的值替换为其他数据框中的值

    在 df1 中 我需要将 msec 的值替换为 df2 中的相应值 df1 lt data frame ID c rs rs rs tr tr tr cond c 1 1 2 1 1 2 block c 2 2 4 2 2 4 correc