在 r 中转换 2mode 网络的数据形式

Converting data form for 2mode network in r

我的数据(excel)是这样的:



我第一栏有2600部电影,其他栏有导演和工作人员的名字。有些名字出现了好几次。

我无法将此 excel 数据转换为我可以在 r 中执行双模式网络分析(事件:电影,这些电影的关系)的格式。是否有任何帮助文档或代码可以将这些数据转换为正确的格式?

您可以使用 igraph(它调用这种类型的网络 bipartite)来做到这一点。

假设您已经创建了一个数据框,其中包含您的 excel 数据,称为 dt。

dt
     Movie     director codirector staff1
1 StarWars     JJAbrams       <NA>   Anne
2  Abarter JamesCameron       <NA>   <NA>
3   Loiter         Kenn      Klark   Kage

然后可以创建一个二分图,g如下:

库(reshape2)

edgelist <- melt(dt, id.vars = 'Movie')[, -2]
edgelist <- edgelist[complete.cases(edgelist), ]

library(igraph)

g <- graph.data.frame(edgelist)

V(g)$type <-  V(g)$name %in% edgelist[, 1]
g
plot(g)
IGRAPH DN-B 9 6 -- 
+ attr: name (v/c), type (v/l)
+ edges (vertex names):
[1] StarWars->JJAbrams     Abarter ->JamesCameron Loiter  ->Kenn         Loiter  ->Klark       
[5] StarWars->Anne         Loiter  ->Kage 

igraph中,二分图是一个规则图,每个顶点的类型属性设置为TRUE/FALSE。顶点的类型无关紧要,在本例中,电影设置为 TRUE