我有以下二进制矩阵,显示每个关键字出现在哪篇文章中。
keyword1 keyword2 keyword3
art1 0 1 0
art2 1 1 0
art3 0 0 1
我尝试了下面的技术来创建邻接矩阵,但我不确定它是否正确以及值是什么意思
df1 <- data.frame(keyword1=c(0,1,0),keyword2=c(1,1,0),keyword3=c(0,0,1),row.names=c("art1","art2","art3"))
df1.mt <- as.matrix(df1)
df1.adj <- t(df1.mt) %*% df1.mt
此时我创建了以下邻接矩阵
keyword1 keyword2 keyword3
keyword1 1 1 0
keyword2 1 2 0
keyword3 0 0 1
这是一个邻接矩阵吗? 它是否通过文章显示关键词之间的关系? 我可以用它来绘制网络图,请问如何?
感谢您的帮助。
答案 0 :(得分:1)
如果您不熟悉igraph
软件包,那么它就是一个非常容易适用于此类任务的网络软件包:
library(igraph)
g <- graph.adjacency(df1.adj)
plot(g)
第一个矩阵是布尔矩阵。您执行的转换是邻接矩阵,对角线是关键字显示的总次数。 off对角线是两个关键字(节点)之间的链接(边缘)。这些边缘也可以加权。
这给出了:
您还可以将对角线设置为零以避免边缘成为循环:
diag(df1.adj) <- 0
g <- graph.adjacency(df1.adj)
plot(g)
得到以下特性: