R:查找由多个对象指定的对象

时间:2015-06-14 23:49:21

标签: r

我有一个包含gene_id,transcript_id和dIF的数据框。我想找到所有具有相应dIF值大于20的transcription_id的gene_id和具有相应dIF值小于-20的transcript_id。

示例:

gene_id   transcript_id   dIF
A         B               3
A         C               32
A         D              -41
X         Y               2
X         Z              -13

我想找到一种方法让A返回(因为它有C > 20D < -20)。
我应该尝试编写一个for循环,还是有一个可以帮助我的软件包?

1 个答案:

答案 0 :(得分:3)

这是我的dplyr解决方案。我的方法是group_by transcript_id,然后根据多个逻辑条件过滤行。它想要你想要吗?也许我没有得到它。

df %>% group_by(transcript_id) %>% filter(dIF > 20 | dIF < -20)
Source: local data frame [2 x 3]
Groups: transcript_id

  gene_id transcript_id dIF
1       A             C  32
2       A             D -41

编辑:@thelatemail的评论

感谢您测试我的代码。这里提供的解决方案可能很好吗?如果我的代码仍然不能正常工作,请告诉我。

df %>% group_by(transcript_id) %>% filter(dIF > 20 | dIF < -20) %>% filter(gene_id == "A")
Source: local data frame [2 x 3]
Groups: transcript_id

  gene_id transcript_id dIF
1       A             C  32
2       A             D -41