网络分析:如何从 csv 创建节点和边文件

network analysis: how to create nodes and edges files from csv

我有一个 csv 格式的双模式(授予 X 人)网络。我想创建这个网络的 personXperson 投影并计算一些网络度量(包括接近度和介数等的中心度量)。

我的第一步是什么?我猜想为节点和边创建 2 个单独的文件,运行 使用 igraph 包在 R 中进行分析?!

这是我的数据的超级简化版本 (my_data.csv)。

决定图表如何表示数据。根据您的描述,一种方法是让图中的节点代表人,边代表赠款。在这种情况下,创建一个由获得相同资助的人组成的成对列表。 iGraph 中的边默认是双向的,所以你只需要每对边一次。

(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")