从长形式的值重建对称矩阵

jwi*_*720 6 r matrix reshape

我有一个看起来像这样的tsv(长形式):

  one   two   value
  a     b     30
  a     c     40
  a     d     20
  b     c     10
  b     d     05
  c     d     30
Run Code Online (Sandbox Code Playgroud)

我想把它变成R(或pandas)的数据帧

    a  b  c  d 
a   00 30 40 20
b   30 00 10 05 
c   40 10 00 30
d   20 05 30 00
Run Code Online (Sandbox Code Playgroud)

问题是,在我的tsv中我只有a,b定义而不是b,a.所以我的数据框中有很多NA.

最终目标是获得用于聚类的距离矩阵.任何帮助,将不胜感激.

use*_*650 7

igraph您在数据框中读取的解决方案,其值为边缘权重.然后,您可以将其转换为邻接矩阵

dat <- read.table(header=T, text=" one   two   value
  a     b     30
  a     c     40
  a     d     20
  b     c     10
  b     d     05
  c     d     30")

library(igraph)

# Make undirected so that graph matrix will be symmetric
g <- graph.data.frame(dat, directed=FALSE)

# add value as a weight attribute
get.adjacency(g, attr="value", sparse=FALSE)
#   a  b  c  d
#a  0 30 40 20
#b 30  0 10  5
#c 40 10  0 30
#d 20  5 30  0
Run Code Online (Sandbox Code Playgroud)