如何使用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 %>% filter(grepl("^ADCY", V1))
?
或df %>% 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/tidyverse 逻辑对数据库进行分类[重复]
使用具有相同字符串但顺序不同的列合并两个 data.frame