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

问题描述 投票:0回答:1

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

例如下面的代码:

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种药物。

谢谢。

r matrix similarity
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.