我有一个包含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 > 20
和D < -20
)。
我应该尝试编写一个for
循环,还是有一个可以帮助我的软件包?
答案 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
感谢您测试我的代码。这里提供的解决方案可能很好吗?如果我的代码仍然不能正常工作,请告诉我。
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