首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >R:如何根据另一个变量中的值选择dplyr::dplyr::dplyr()保持的行?

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

Stack Overflow用户
提问于 2018-01-22 12:22:35
回答 4查看 8.7K关注 0票数 20

现实生活中的问题:我有核磁共振扫描数据。其中一些已被多次扫描(单独的行)。每一次都会根据不同的程序扫描其中一些。我希望按主题ID保留所有唯一的行,如果在两个不同的协议下扫描了一个主题,我希望它选择一个而不是另一个。

玩具例子:

代码语言:javascript
运行
AI代码解释
复制
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,但我愿意听取其他建议。

我尝试过的任何东西都没有开始起作用:

代码语言:javascript
运行
AI代码解释
复制
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建议

代码语言:javascript
运行
AI代码解释
复制
df %>% arrange(id, desc(protocol == 'Y')) %>% distinct(id, .keep_all = TRUE)  

如果我有多个协议,并且希望指定一个选择它们的顺序,我可以创建一个新的变量,在这个变量中,我按照偏好顺序为协议分配一个整数,然后使用@joran的建议。

代码语言:javascript
运行
AI代码解释
复制
df %>% group_by(id) %>% arrange(desc(protocol),var) %>% slice(1)  

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-01-22 12:53:38

按字母顺序排列在所述的简单情况下是可行的,但如果您想要添加一个protocol_preference变量,则可以按字母顺序排列您希望选择的内容,并选择"Y“,即使它不是按字母顺序排序时的最后一个协议值。

建立在@davechilders回答和@Nathan的想法的基础上建立一个基于“重要性顺序”向量的因素。

代码语言:javascript
运行
AI代码解释
复制
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’是不可否认的,您可以这样做。

代码语言:javascript
运行
AI代码解释
复制
df %>% 
    arrange(id, desc(protocol == 'Y')) %>% 
    distinct(id, .keep_all = TRUE)
票数 8
EN

Stack Overflow用户

发布于 2018-01-22 12:33:28

如果您希望输出是一个不是group_by()的tibble,则无需使用grouped_df就可以实现这一点。

代码语言:javascript
运行
AI代码解释
复制
df %>% arrange(id, desc(protocol)) %>% distinct(id, .keep_all = TRUE)
票数 6
EN

Stack Overflow用户

发布于 2018-01-22 12:29:11

可能有一种更快的方法(几乎可以肯定是使用data.table),但我认为,在dplyr中,这是一种天真的直接方法:

代码语言:javascript
运行
AI代码解释
复制
df %>% group_by(id) %>% arrange(desc(protocol),var) %>% do(head(.,1))

正如@Gregor (现在删除)所指出的,slice(1)可能是do(head(.,1))的一个更好的成语。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48389658

复制
相关文章
使用dplyr进行数据转换
dplyr最常用的5个函数: • 按值筛选观测(filter())。 • 对行进行重新排序(arrange())。 • 按名称选取变量(select())。 • 使用现有变量的函数创建新变量(mutate())。 • 将多个值总结为一个摘要统计量(summarize())。 函数的使用方法: (1) 第一个参数是一个数据框。 (2) 随后的参数使用变量名称(不带引号)描述了在数据框上进行的操作。 (3) 输出结果是一个新数据框。
生信编程日常
2020/04/01
9910
java小技能:对list集合根据条件进行分组、过滤和字段筛选
需求:修改代理商角色权限时,判断是否存在权限被移除,如果存在,则穿透删除所有下级代理商相对应的权限值。
公众号iOS逆向
2022/12/19
6.3K0
java小技能:对list集合根据条件进行分组、过滤和字段筛选
使用SnpSift filter对VCF文件进行筛选
当完成突变位点注释之后,我们会得到一个巨大的VCF文件,文件大小从几十M到几十G不等。在数量如此多的突变位点中,我们只会根据注释结果从中挑选部分感兴趣的突变位点,这就要求对VCF文件进行过滤。如此大的文件用Excel 操作是不现实的,脚本语言处理大文件时效果也不尽人意,所以SnpEff的开发团队专门开发了一款工具,叫做SnpSift, 用来对VCF文件进行过滤。
生信修炼手册
2020/05/11
3.1K0
如何使用EvtMute对Windows事件日志进行筛选过滤
在这篇文章中,我们将告诉大家如何使用EvtMute来对Windows事件日志进行筛选过滤。EvtMute这款工具允许我们使用YARA来进行攻击性操作,并对已经报告给Windows事件日志的事件进行过滤和筛选。
FB客服
2021/03/09
9250
如何使用EvtMute对Windows事件日志进行筛选过滤
数据库按条件查询语句_sql多条件筛选语句
在SQL中,insert、update、delete和select后面都能带where子句,用于插入、修改、删除或查询指定条件的记录
全栈程序员站长
2022/10/03
4K0
数据库按条件查询语句_sql多条件筛选语句
使用SQL语句如何实现条件判断
客户需求是咨询如何用SQL结合decode函数实现条件判断,比如当某一列数值大于500,对应类型“大于500”;当某一列数值小于500,对应类型“小于500”。 实际decode函数无法实现这个功能,实现要用到case when,为此我构造一个简单的示例来直观演示:
Alfred Zhao
2019/05/24
2.4K0
R语言︱数据集分组、筛选(plit – apply – combine模式、dplyr、data.table)
大型数据集通常是高度结构化的,结构使得我们可以按不同的方式分组,有时候我们需要关注单个组的数据片断,有时需要聚合不同组内的信息,并相互比较。
悟乙己
2019/05/28
20.9K0
使用 QueryBuilder 构造复杂的数据筛选语句
QueryBuilder 是一个常用的过滤器的 UI 组件,本文从前后端和数据库查询的角度总结了一些使用经验,包括一些踩坑的心得。
windseeker
2021/12/01
6.9K0
使用 QueryBuilder 构造复杂的数据筛选语句
sql对多个条件进行分组求和_分组求和法例题附答案
大家好,又见面了,我是你们的朋友全栈君。 在ireport中实现分组,求和。效果如下 name total A 2 A 3 subtotal 5 B 4 B 5 subtotal 9 添加Document–>Variables–>Variable Name 建立自定义的求和函数 设置相关属性。 Calculation 设置为sum reset type为report Reset group 选择自己创建的分组。 increment type 为Group Variable Expression填写你要累计的对象表达式。 new Integer($F{rxNo}) Initial Value Expression处填写数据类型的初始化对象。 new java.lang.Integer(0)
全栈程序员站长
2022/10/03
2.8K0
使用FILTER函数筛选满足多个条件的数据
其中,参数数组,是想要筛选的数据,可以是单元格区域或者数组。参数包括,指定筛选的条件,应返回TRUE,以便将其包含在查询中。参数是否为空,如果没有满足筛选条件的结果,则可以给该参数指定要返回的内容,可选。
fanjy
2023/09/15
3.7K0
使用FILTER函数筛选满足多个条件的数据
使用dplyr进行数据分析:入门篇
tidyverse系列应该算是R语言数据分析中的瑞士军刀了,统一的格式,简洁的代码,管道符便于阅读的形式,都能让大家快速上手。R数据科学就是专门讲这个系列的,但是对于很多函数的用法和细节问题,都没有说,所以在使用时还是会经常遇到各种问题。
医学和生信笔记
2022/11/14
1.5K0
Power Pivot中筛选条件的使用
在Power Pivot中,在大部分时间里,筛选是作为一个主要的功能运用到各个地方,筛选上下文,行上下文都和筛选相关。
逍遥之
2020/03/23
4.9K0
使用Evaluate方法筛选数据——基于两个条件
中,我们讨论了不使用筛选器而筛选数据的方法技巧,它可以替代自动筛选方法。这里我们进一步以示例扩展这个技巧。
fanjy
2022/11/16
1.5K0
使用Evaluate方法筛选数据——基于两个条件
使用 Python 对相似索引元素上的记录进行分组
在 Python 中,可以使用 pandas 和 numpy 等库对类似索引元素上的记录进行分组,这些库提供了多个函数来执行分组。基于相似索引元素的记录分组用于数据分析和操作。在本文中,我们将了解并实现各种方法对相似索引元素上的记录进行分组。
很酷的站长
2023/08/11
3010
使用 Python 对相似索引元素上的记录进行分组
dplyr强大的分组汇总
在现实生活中我们经常会遇到非常多需要分组汇总的情况,单个的汇总价值不大,只有分组之后,才能看出差异,才能表现出数据的价值。
医学和生信笔记
2022/11/15
1.8K0
如何使用Python对Instagram进行数据分析?
我写此文的目的在于展示以编程的方式使用Instagram的基本方法。我的方法可用于数据分析、计算机视觉以及任何你所能想到的酷炫项目中。 Instagram是最大的图片分享社交媒体平台,每月活跃用户约五亿,每日有九千五百万的图片和视频被上传到Instagram。其数据规模巨大,具有很大的潜能。本文将给出如何将Instagram作为数据源而非一个平台,并介绍在项目中使用本文所给出的开发方法。 API和工具简介 Instagram提供了官方API,但是这些API有些过时,并且当前所提供的功能也非常有限。因此在
小莹莹
2018/04/24
2.8K0
如何使用Python对Instagram进行数据分析?
对 list 中的相同数据进行分组
同一组数据分组 需求:一个 list 里可能会有出现一个用户多条数据的情况。要把多条用户数据合并成一条。 思路:将相同的数据中可以进行确认是相同的数据,拿来做分组的 key,这样保证不会重。 实际中使用,以用户数据为例,可能用户名和身份证号是不会变的,用这两个条件拼接起来。
潇洒
2019/06/28
5.8K0
如何使用cdn对网站进行加速
今天抽空整理下网站,时间太久,历史文件太多,删除了一些无用的垃圾,更换了服务器,调整了cdn,鼓捣2天,更换好目前感觉良好。
霍常亮
2020/07/19
17K0
如何使用cdn对网站进行加速
使用 Python 对相似的开始和结束字符单词进行分组
在 Python 中,我们可以使用字典和循环等方法、利用正则表达式和实现列表推导等方法对具有相似统计和结束字符的单词进行分组。该任务涉及分析单词集合并识别共享共同开始和结束字符的单词组。这在各种自然语言处理应用程序中可能是一种有用的技术,例如文本分类、信息检索和拼写检查。在本文中,我们将探讨这些方法,以在 Python 中对相似的开始和结束字符单词进行分组。
很酷的站长
2023/08/11
1890
使用 Python 对相似的开始和结束字符单词进行分组
点击加载更多

相似问题

R中共现数据的模拟

23

R矩阵与共现分析

16

R生成共现矩阵

20

使用r创建共现矩阵。

24

如何使用R创建共现矩阵

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文