【问题标题】:Find differences among groups based on a condition in dplyr根据 dplyr 中的条件查找组之间的差异
【发布时间】:2021-11-24 10:47:29
【问题描述】:

我有一个看起来像这样的数据框,但它很大。

df = data.frame(gene=c("A","B","F","A","D","E","B","C","D","G"),
                group=c("group1","group1","group1","group2","group2","group2","group3","group3","group3","group3"))
df

 gene    group
   A     group1
   B     group1
   F     group1
   A     group2
   D     group2
   E     group2
   B     group3
   C     group3
   D     group3
   G     group3

基于列基因,我想找出包含基因“A”的组与不包含基因A的组之间的独特差异。

我希望我的数据在“过滤”之后看起来是这样的

gene group
 F    group1
 E    group2

因为 F 是唯一存在于包含基因 A 的组中的基因,并且它不存在于任何其他组中。

【问题讨论】:

  • 谢谢马丁。我试图找到只属于 A 组而不属于其他组的基因。 C 和 G 不在与 A 的组中。这有意义吗?
  • @LDT 是的,抱歉,我看错了你的问题。

标签: r dplyr datatable tidyverse tidy


【解决方案1】:

我们可以filter 'gene' 包含'A' 而没有'A' 的行,然后执行anti_join

library(dplyr)
tmp1 <- df %>% 
       filter(group %in% group[gene %in% 'A'])
 
tmp2 <- df %>% 
          group_by(group) %>% 
         filter(!'A' %in% gene) %>%
         ungroup
anti_join(tmp1, tmp2, by = 'gene') %>%
      filter(gene != 'A')

-输出

 gene  group
1    F group1
2    E group2

【讨论】:

    猜你喜欢
    • 2018-03-20
    • 1970-01-01
    • 2017-06-03
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多