将药物基因相互作用列表转换为R中的相似性矩阵

时间:2018-09-13 19:41:43

标签: r matrix similarity

我有一个相互作用列表,其中第一列包含不同的药物,第二列包含与药物相互作用的基因。

例如下面的代码:

DGIdbpractice <- data.frame(c("drug1", "drug1", "drug1", "drug2", "drug2", "drug3","drug3","drug3"), c("gene1", "gene2", "gene3", "gene2", "gene3", "gene1", "gene3", "gene4"))
names(DGIdbpractice) <- c("drug", "gene")

产生一个看起来像这样的数据框:

  drug  gene
1 drug1 gene1
2 drug1 gene2
3 drug1 gene3
4 drug2 gene2
5 drug2 gene3
6 drug3 gene1
7 drug3 gene3
8 drug3 gene4

我想创建一个相似性矩阵,将每种药物彼此之间以及彼此之间进行比较,其中矩阵中的值表示它们都与多少个基因相互作用。

它应该看起来像下面的矩阵:

      gene1 gene2 gene3 
drug1  3     2     2
drug2  2     2     1
drug3  2     1     3 

我不想使用多个循环,因为实际数据集包含4,000多种药物。

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以将dplyrtable()功能一起使用。

b <- DGIdbpractice %>% full_join(DGIdbpractice, by = "gene")
table(b$drug.x, b$drug.y)

        drug1 drug2 drug3
  drug1     3     2     2
  drug2     2     2     1
  drug3     2     1     3