如何使用dplyr过滤相同名称但不同编号的列[重复]

Posted

技术标签:

【中文标题】如何使用dplyr过滤相同名称但不同编号的列[重复]【英文标题】:How to filter column for same name but different number using dplyr [duplicate] 【发布时间】:2019-02-05 11:15:30 【问题描述】:

如果这篇文章的标题不准确,我提前道歉。我已经知道这是一个非常简单的问题,如果我知道正确的术语,我可能会找到一篇关于此的过往帖子。

所以我想要做的是使用 dplyr 过滤我的数据以获得基因家族。这是一个例子,所以它更有意义。

我有一个名为ADCY 的基因家族,但组成该家族的是 10 个独立的基因。所以家庭看起来是这样的

ADCY1
ADCY2
ADCY3
ADCY4
ADCY5
ADCY6
ADCY7
ADCY8
ADCY9
ADCY10 

我知道我可以做这样的事情,但是必须输入所有 10 个基因有点烦人,尤其是当我有一堆我想查看的其他基因家族时。

genes <- c("ADCY1", "ADCY2", "ADCY3", "ADCY4", "ADCY5", "ADCY6", "ADCY7", 
           "ADCY8", "ADCY9", "ADCY10")`


df_filtered <- df %>%
                 filter(symbol %in% genes)

我想知道是否有使用 dpylr 并过滤可能只是基因名称的开头?如果这有意义吗?我知道有一个可以使用的starts_with("ADCY"),但是当我尝试将它与filter 选项一起使用时,我的R 会话崩溃了。我想知道是否有人有一些解决方案!

【问题讨论】:

当您想要选择名称与您的模式匹配的列时,starts_with 很有帮助。不是当您想选择特定变量/列的值时。为您的案例尝试 grep 函数系列中的一些内容。 df %&gt;% filter(grepl("^ADCY", V1)) ? df %&gt;% filter(str_detect(symbol, "^ADCY")) @AntoniosK 感谢您的建议!以后我会记住的!!我真的很感激帮助!像魅力一样工作 @RonakShah 感谢您的帮助!这就像一个魅力!非常感谢您的帮助 【参考方案1】:

你可以使用旧的(我的意思是不需要依赖)paste0

paste0("ADCY", 1:10)
[1] "ADCY1"  "ADCY2"  "ADCY3"  "ADCY4"  "ADCY5"  "ADCY6"  "ADCY7"  "ADCY8"  "ADCY9" 
[10] "ADCY10"

【讨论】:

以上是关于如何使用dplyr过滤相同名称但不同编号的列[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python 相当于 R 的 grepl 和 dplyr 过滤器 [重复]

使用dplyr汇总并保持相同的变量名称

使用过滤器/变异和 dplyr/tidyverse 逻辑对数据库进行分类[重复]

使用具有相同字符串但顺序不同的列合并两个 data.frame

Apollo 客户端 - 为相同的字段名称分离分页查询但使用不同的过滤器

在 R dplyr 中过滤具有多个条件名称匹配的数据框