R:如何根据另一个变量中的值选择 dplyr::distinct() 保留哪一行?

2024-01-09

现实生活中的问题:我的受试者有 MRI 扫描数据。其中一些已被扫描多次(单独的行)。其中一些每次都是根据不同的协议进行扫描的。我想按主题 ID 保留所有唯一行,如果主题是在两种不同的协议下扫描的,我希望它更喜欢其中一种。

玩具示例:

library(dplyr)  
df <- tibble(
        id = c("A", "A", "B", "C", "C", "D"), 
        protocol = c("X", "Y", "X", "X", "X", "Y"),
        date = c(seq(as.Date("2018-01-01"), as.Date("2018-01-06"), 
                 by="days")),
        var = 1:6)

我想返回一个包含所有唯一主题(按 id)的数据框。当涉及到重复值时,我希望它保留带有“Y”的条目作为协议(如果它有该选择),而不是自动保留第一个条目,但不要删除带有“X”的行,否则。

在示例中,它将保留第 2、3、4 和 6 行。

我更喜欢 dplyr,但也愿意接受其他建议。

我尝试过的一切都没有开始起作用:

df %>% distinct(id, .keep_all = TRUE) #Nope! 

df %>% distinct(id, protocol == "Y", .keep_all = TRUE) #Nope!  

df$protocol <- factor(df$protocol, levels = c("Y", "X"))
df %>% distinct(id, .keep_all = TRUE) #Nope!  

df %>% group_by(id) %>% filter(protocol == "Y") #Nope!

两个很好的答案: @RobJensen 建议

df %>% arrange(id, desc(protocol == 'Y')) %>% distinct(id, .keep_all = TRUE)  

如果我有多个协议并希望分配它们的选择顺序,我可以创建一个新变量,在其中按优先顺序为协议分配一个整数,然后使用 @joran 的建议

df %>% group_by(id) %>% arrange(desc(protocol),var) %>% slice(1)  

Thanks!


按字母顺序排列适用于上述简单情况,但如果您愿意,可以添加protocol_preference变量给出您希望选择的顺序,如果Y不可用,并且选择“Y”,即使它不是按字母顺序排序时的最后一个协议值。

构建@davechilders 的答案和@Nathan Werth 的基于“重要性顺序”向量创建因子的想法

order_of_importance <- c("Y", "Z", "X")

    df2 %>%
      mutate(protocol = factor(protocol, order_of_importance)) %>%
      arrange(id, protocol) %>%
      distinct(id, .keep_all = TRUE)

或者,如果您只想选择“Y”并且对所选内容没有偏好(如果“Y”不可用),您可以这样做

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

R:如何根据另一个变量中的值选择 dplyr::distinct() 保留哪一行? 的相关文章

  • R markdown 引文标识符

    R markdown 允许使用 YAML 元数据部分中的参考书目元数据字段指定参考书目文件 例如 title Sample Document output html document bibliography bibliography bi
  • 如何更改 Quarto pptx 中的字体格式

    我正在 R 中使用 Quarto 创建 pptx 要更改我尝试更改的默认字体格式mainfont范围 但是当我渲染它时 最终的 pptx 文件具有默认字体 Calibri 这是我的文件 YAML 将 Quarto 文件渲染为 pptx 时如
  • 以计数矩阵作为响应的多项式

    根据帮助multinom 包裹nnet 响应应该是一个因子或具有 K 列的矩阵 它将被解释为每个 K 类的计数 我尝试在第二种情况下使用此函数 但出现错误 这是我所做的示例代码 response lt matrix round runif
  • 如何转置 R markdown 文档中的表格?

    假设我打印一个名为summary table的数据框 如下所示 summary table data frame a c 1 2 3 b c 11 12 13 c c 21 22 23 d c 31 32 33 e c 41 42 43 f
  • 如何用月份的全名替换数字月份

    使用 tidyverse 包将月份的列更改为完整的实际月份名称 请记住 尽管这些数据只有四个月 但我的真实数据集包含一年中的所有实际月份 我是 tidyverse 的新手 mydata lt tibble camp c Platinum 2
  • 当添加列较少时追加到现有 SQLite 表,而不将数据库读入 R

    是否有一些简单的方法 无论是在 SQL 端还是在 R 端 将 data frame 附加到具有更多列的现有表 缺失的列应该用 NA 填充 如果它能够优雅地处理比表 1 列数更多的表 2 那么会加分吗 library RSQLite Crea
  • 用闪亮的 R 设计 DT 中的展开行按钮

    我正在尝试设计 DT 中可用的展开行按钮的样式 样式可用here https datatables net examples api row details html 我用于创建数据表的代码是 library DT datatable cb
  • 计算数据框中每一行的 R 条件运行总和

    我想创建一个等于 data Rating 的运行总和的列 假设第 3 列和第 4 列中有两个条件成立 特别是 data Year 换句话说 这应该计算直到上一年为止每个 id 的评分累积总和 它应该对数据框中的每一行 大约 50 000 行
  • 如何将环境变量传递给shinyapps

    我想将安全参数传递给shinyapps io部署 以便我的应用程序可以通过以下方式获取它们 Sys getenv PASSWORD X 我找不到任何相关内容deployApp函数在rsconnect包裹 您可以使用Renviron网站 or
  • 如何缩放(标准化)每列内的 ggplot2 stat_bin2d 值(按 X 轴)

    我有一个 ggplot stat bin2d 热图 library ggplot2 value lt rep 1 5 1000 df lt as data frame value df group lt rep 1 7 len 5000 d
  • R Leaflet:添加多边形时传递 popupOptions。

    Within addPolygons 有一个popup参数就像addPopups 功能 区别 我认为 是当弹出窗口创建时addPolygons 可以单击多边形内的任意位置来触发弹出窗口 但是如果addPopups 被使用 单个lng and
  • 通过 :: 调用包中的函数是一个好习惯吗

    我正在编写一些 R 函数 这些函数在其他包中使用一些有用的函数 例如stringr and base64enc 不打电话好不好library or require 首先加载这些包但要使用 直接引用我需要的功能 比如stringr str m
  • SQL Server RODBC 连接

    有没有人有使用 RODBC 并连接到 MS SQL Server 2005 或 2008 的连接字符串示例 谢谢 library RODBC dbhandle lt odbcDriverConnect driver SQL Server s
  • 提取所有列组中共有的元素

    我有一个 R 数据集 x 如下 ID Month 1 1 Jan 2 3 Jan 3 4 Jan 4 6 Jan 5 6 Jan 6 9 Jan 7 2 Feb 8 4 Feb 9 6 Feb 10 8 Feb 11 9 Feb 12 10
  • 如果指定了多个存储库,install.packages 的行为是什么?

    从文档中并不清楚如果在 install packages 中指定了多个存储库会出现什么行为 我的直觉告诉我 它将尝试第一个存储库 如果找不到包 它将尝试第二个存储库 依此类推 不幸的是 情况似乎并非如此 我看到的是 只尝试了第一个 并返回错
  • R中一张图中的多个条形图

    我是 R 初学者 我需要创建一个像这样的图表 https i stack imgur com az56z jpg https i stack imgur com az56z jpg 我不知道如何生成整个数据集 基本思想是某个外显子 ID 会
  • R Shiny UI 子选项复选框?

    我有一个基本的 RShiny 应用程序 它有一个反应式复选框 它根据复选框中选择的数据 df 列 绘制时间序列数据 我当前的代码生成一个带有复选框输入的 UI 如下所示 Load R packages library shiny libra
  • 使用开源闪亮服务器时,我的图标不会显示在我的应用程序的浏览器选项卡上

    我一直在尝试找到一种方法将 ico 与托管在开源闪亮服务器上的闪亮应用程序的快捷方式关联起来 最终 我希望 ico 显示为我的应用程序快捷方式的图形 而且 我希望用户在创建应用程序的快捷方式时显示 可用此图标 听起来很简单 但事实证明这是一
  • 递归累积函数

    我需要在 R 中编写一个累积求和函数 但我一直碰壁 该函数具有以下结构 a x1 a x2 a 2 x1 a x3 a 2 x2 a 3 x1 a x4 a 2 x3 a 3 x2 a 4 x1 等等 cumsum 似乎不适用于此类功能 有
  • 根据条件计算平均值

    下面是我的数据框 Row ID A B 1 0 0 2 0 0 3 0 0 4 0 1 5 0 1 6 0 1 7 62 75 0 8 100 0 9 100 0 10 100 1 11 100 1 12 100 1 13 100 1 14

随机推荐

  • JNI 环境指针

    我有一个 Java 类 其中有一个必须从 C 代码调用的函数 函数如下 public void endTrial Code 所以我在我的 C 文件中创建了以下代码 JNIEXPORT void JNICALL package endTria
  • 获取 post_save 信号中字段的先前值

    我在 django 中有一个 post 信号 我需要访问字段的先前值 post save connect callback function postsave sender Media 我知道理想情况下我应该使用 pre save pre
  • UITableView reloadData() 不刷新显示的单元格

    I have class StationViewController UITableViewController UITableViewDelegate UITableViewDataSource IBOutlet var stationT
  • 包括所有依赖项

    我刚刚开始使用 WiX 因为我需要能够在我们的 CI 服务器上自动构建 MSI 有没有办法自动包含项目的所有依赖项 heat exe 的 proj 扩展变得越来越好 Heat http wixtoolset org documentatio
  • 对命名实体使用(NLP)门工具[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我可以使用GATE吗http gate ac uk http gate ac uk 在我的java程序中提取命名实体 如果是 您能否举
  • sphinx-build 失败 - autodoc 无法导入/查找模块

    我正在尝试开始使用 Sphinx 但似乎遇到了无情的问题 命令 docs sphinx quickstart 我回答了所有问题 一切正常 命令 docs ls 一切看起来都很正常 结果 build Makefile source 命令 sp
  • 改变网格的不透明度会产生“淡入”效果吗?

    我在创建网格淡入淡出效果时遇到一些问题 我想要点击后出现一个网格 这可能吗 Thanks 参加派对有点晚了 因为我刚刚写的与隐士戴夫几乎相同 但也许它有助于更 好地理解 另一种方法是 在 XAML 视图中设置 Storyboard 项 在我
  • 正则表达式不允许使用字符,除非转义

    下面是我的正则表达式来解析逗号分隔的键值对 function extractParams str var result str replace s s s s g function a b result a trim b trim retu
  • 如何在 Ruby 中创建双向 SSL 套接字

    我正在构建一个客户端 Ruby 库 它连接到服务器并等待数据 但也允许用户通过调用方法发送数据 我使用的机制是有一个初始化套接字对的类 如下所示 def initialize pipe r pipe w Socket pair UNIX S
  • 无法删除目录 ACE

    我正在使用 C 和 NET 4 编写一个类库 它通过网络与共享服务器上的文件系统进行交互 我正在尝试调整文件夹的某些权限 并且我完全有能力添加 ACE 但我很难删除它们 这是我到目前为止的代码 get ACEs for the workin
  • JPA 多线程 org.eclipse.persistence.exceptions.ConcurrencyException

    嗨 我尝试使用多线程JSOUP and JPA解析一些页面并将信息放入数据库中 但有时我会遇到此异常 Exception in thread Thread 7 Local Exception Stack Exception EclipseL
  • 多线程和递归结合在一起

    我有递归代码以深度优先的方式处理树结构 代码基本上是这样的 function TreeNode curr if curr children null curr children isEmpty for TreeNode n curr chi
  • ReST 低延迟 - 在上传待处理时我应该如何回复 GET?

    我正在设计一个ReST https restfulapi net 遵循基本的APICRUD https en wikipedia org wiki Create read update and delete图案 我的 API 可以接收更新资
  • 使用 linq2xml 订购 xml 文件

    以下问题使用 LINQ2XML 过滤 xml https stackoverflow com questions 11006160 filter xml with linq2xml 从 xml 文件成功过滤 删除节点 后 我想按节点中的某些
  • ASP.net 很好地渲染 HTML(美化)

    当我在 ASP net 中生成控件时 它们的结果如下 div class discussWrapper span class cbox highlighted span div
  • java.lang.IllegalArgumentException:解密图像时错误的base-64

    我正在使用 Jsoup 解析器选择图像 Elements images document select img String src images attr src 然后使用这段代码来摆脱data image jpg base64 pure
  • 温斯顿记录器名称

    Flatiron 的日志记录库 Winston 非常有用 但我不知道如何为记录器分配名称 我期待与其他日志库类似的输出 例如
  • Twitter Bootstrap TreeView 插件 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道 twitter bootstrap 中树视图的成熟插件吗 到目前为止我发现的大多数东西是 a
  • 如何在编译时计算类成员的偏移量?

    给定 C 中的类定义 class A public methods definition private int i char str 是否可以使用 C 模板元编程在编译时计算类成员的偏移量 该类不是 POD 并且可以具有虚拟方法 基元和对
  • R:如何根据另一个变量中的值选择 dplyr::distinct() 保留哪一行?

    现实生活中的问题 我的受试者有 MRI 扫描数据 其中一些已被扫描多次 单独的行 其中一些每次都是根据不同的协议进行扫描的 我想按主题 ID 保留所有唯一行 如果主题是在两种不同的协议下扫描的 我希望它更喜欢其中一种 玩具示例 librar