【问题标题】:How to filter column for same name but different number using dplyr [duplicate]如何使用dplyr过滤相同名称但不同编号的列[重复]
【发布时间】: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 感谢您的帮助!这就像一个魅力!非常感谢您的帮助

标签: r dplyr


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-01-18
    • 1970-01-01
    • 2017-12-10
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多