首页 > 解决方案 > 根据 dplyr R 中的多个条件删除组

问题描述

我有一个看起来像这样的数据

gene=c("A","A","A","A","B","B","B","B")
frequency=c(1,1,0.8,0.6,0.3,0.2,1,1)
time=c(1,2,3,4,1,2,3,4)
df <- data.frame(gene,frequency,time)

  gene frequency time
1    A       1.0    1
2    A       1.0    2
3    A       0.8    3
4    A       0.6    4
5    B       0.3    1
6    B       0.2    2
7    B       1.0    3
8    B       1.0    4

我想删除每个基因组,在这种情况下是 A 或 B 当他们有 frequency > 0.9time==1 这种情况下,我想删除 A 和我的数据看起来像这样

  gene frequency time
1    B       0.3    1
2    B       0.2    2
3    B       1.0    3
4    B       1.0    4

任何提示或帮助表示赞赏

标签: rdplyrtidyversetidy

解决方案


我们可以使用subsetfrom,base R即创建一个具有多个表达式的逻辑向量,提取与之对应的“基因”,用于%in%创建一个逻辑向量,取反(!)返回不存在的基因。或者也可以更改><=并删除!

subset(df, !gene %in% gene[frequency > 0.9 & time == 1])

-输出

   gene frequency time
5    B       0.3    1
6    B       0.2    2
7    B       1.0    3
8    B       1.0    4

推荐阅读