在 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
。
我的数据(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
。