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

时间:2017-01-16 18:22:51

标签: python r social-networking

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

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

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

  • 格兰特,人
  • A,1
  • A,2
  • B,2
  • B,3

2 个答案:

答案 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")

enter image description here