我有一个csv格式的双模式(授予X人)网络。我想创建这个网络的personXperson投影并计算一些网络措施(包括亲密度和中介性的中心度量等)。
我的第一步是什么?我猜测为节点和边创建2个单独的文件,并使用igraph包在R中运行分析?!
这是我的数据的超简化版本(my_data.csv)。
答案 0 :(得分:0)
决定图表如何表示数据。根据您所描述的方法,一种方法是让图表中的节点代表人物,边缘代表授权。在这种情况下,创建一对在同一个拨款上的人。默认情况下,边缘在iGraph中是双向的,因此您只需要每对一次。
答案 1 :(得分:0)
(1)使用igraph
创建图表; (2)宣布为二分; (3)将其投影为单模式图。
el <- read.table(text = "Grant,Person
A,1
A,2
B,2
B,3",
sep = ",", header = T, stringsAsFactors=F)
#1
net <- graph.edgelist(as.matrix(el))
#2
V(net)$type <- bipartite.mapping(net)$type
您可以通过检查来检查图表是否为二分图:
> net
IGRAPH DN-B 5 4 --
+ attr: name (v/c), type (v/l)
+ edges (vertex names):
[1] A->1 A->2 B->2 B->3
第二行中的“B”表示它是二分图。
#3
net1mode <- bipartite.projection(net)$proj2
bipartite.projection
函数创建两个项目,每个模式一个。节点是第二个投影,因为它们位于原始边缘列表的第二列。
par(mfrow=c(1,2))
plot(net,edge.arrow.size=0.5,main="Two mode")
plot(net1mode,edge.arrow.size=0.5, main="One mode projection")