我有一个包含关系列表的关系表:
Party_A Party_B
a b
c a
d b
b e
...
您可以认为此表包含图表中(指示:方向是从Party_A到Party_B)边缘的信息。
我想要一些可以将此表转换为支持以下查询的图模型的包: 找到彼此最相似的两方,其中相似性被定义为具有最常见的输入边缘。
R中的任何包可以帮我这么做吗?谢谢。
答案 0 :(得分:0)
以下是一种可以接近它的方法(使用Jaccard distance):
df <- read.table(header=T, text="source target
a b
c b
a e
c e
f g
h i
a i
c i")
library(igraph)
g <- graph_from_data_frame(df)
m <- t(as_adjacency_matrix(g, sparse = F))
d <- dist(m[rowSums(m)>0, ], method = "binary")
dm <- as.matrix(d); dm[upper.tri(dm, T)] <- NA
idx <- which(dm == min(dm, na.rm=T), T)
cbind(rownames(dm)[idx[, "row"]], colnames(dm)[idx[, "col"]])
# [,1] [,2]
# [1,] "e" "b"
可视化树形图中的距离:
hc <- hclust(d)
plot(hc)
根据需要调整距离测量。