我有一个 GO 通路的数据框以及在每个通路中活跃的相应基因。每条路径及其数据都是数据框的一行。目前,与通路相关的所有基因都在单个细胞中,以逗号分隔。我想要的是能够将任何特定通路的基因列与所有其他通路的基因列进行比较,以查看它们有多少共同基因(相似度百分比)。理想情况下,它还会告诉我哪些基因是共同的。
命令 intersect() 看起来像我想要的,除了它需要多个对象并且我需要它在一个数据帧中工作。 Intersect 看起来也比较整行/列,出于我的目的,我真的只需要比较基因列。理想情况下,该解决方案对于大型数据集是有效的,因为我有大约 7000 条路径可供比较。举个小例子:
途径 | 基因 |
---|---|
新陈代谢 | ab, ac, ae |
生物合成 | ab, ac, af |
T细胞激活 | ab, ac, ae, ag |
基因表达 | ab, ai, aj, ak |
希望这样的输出(假设第一个数据行是成对比较的数据行)
途径 | 基因 | 相似度% | 共同基因 |
---|---|---|---|
新陈代谢 | ab, ac, ae | 100% | ab, ac, ae |
生物合成 | ab, ac, af | 67% | ab, ac |
T细胞激活 | ab, ac, ae, ag | 86% | ab, ac, ae |
基因表达 | ab, ai, aj, ak | 29% | ab |
显然,如果被比较的单元格不与自身进行比较会很好,但这真的没什么大不了的。我发现了比较行或列但二进制输出似乎无法解决我的问题的实例。我试图找到解决方案的类似情况,但我认为每个单元格的多个值的组合以及我对 R 的缺乏经验使它成为一个挑战。任何帮助,甚至指向另一个谈论类似事情的资源,将不胜感激。