繁体   English   中英

igraph R的共同作者网络边缘列表

[英]Co-authorship network edge list for igraph R

我有一些与某些出版物有关的数据表,如下:

PubID   Author
169759  ZJ
174843  RA
174843  DJ
174843  JP
174843  GS
174843  Tv
171051  MC
171051  JR
171051  CW
171719  PB
171719  MD
171719  FO
169759  FO
173847  RA
173847  DJ

并希望将其转变为边缘列表,以输入igraph来显示共同作者网络(例如RA和DJ在一起有两篇论文)。 我总共有大约7000个ID。 我对网络没问题,但是我无法弄清楚如何从数据中获取边缘列表。 你能帮我吗?

您是否正在寻找这样的东西:

library(igraph)


PubID <- c("169759","174843","174843","174843","174843","174843","171051","171051","171051","171719","171719","171719","169759","173847","173847")
Author <- c("ZJ","RA","DJ","JP","GS","Tv","MC","JR","CW","PB","MD","FO","FO","RA","DJ")
dt <- data.frame(Author,PubID)
levs <- unique(unlist(dt, use.names = FALSE))
adj <- table(lapply(dt, factor, levs))
g1 <- graph_from_adjacency_matrix( adj )
plot(g1)

在此处输入图片说明

我根据您的数据创建了一个邻接矩阵。

这是基于一些与tidyverse争吵的数据的解决方案。 作者之间的共同论文数在n属性中存储为n

PubID <- c("169759","174843","174843","174843","174843","174843","171051","171051","171051","171719","171719","171719","169759","173847","173847") Author <- c("ZJ","RA","DJ","JP","GS","Tv","MC","JR","CW","PB","MD","FO","FO","RA","DJ") dt <- data.frame(Author,PubID) library(tidyverse) library(igraph) dt %>% mutate(author_id = as.integer(Author)) -> dt dt %>% inner_join(dt, by = "PubID") %>% filter(author_id.x < author_id.y) %>% count(Author.x, Author.y) %>% graph_from_data_frame(directed = FALSE) -> g1 plot(g1) as_data_frame(g1, what = "edges") 结果图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM