Список краевых соавторских сетей для igraph R - PullRequest
0 голосов
/ 25 мая 2018

У меня есть таблица данных, относящихся к некоторым публикациям, следующим образом:

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 иУ диджея есть две статьи вместе).У меня есть около 7000 идентификаторов.Я в порядке с сетевым битом, но я просто не могу понять, как получить список краев из данных.Вы можете помочь?

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Вот решение, основанное на обработке данных с помощью tidyverse.Количество общих работ между авторами хранится как 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") the resulting graph

0 голосов
/ 25 мая 2018

Вы ищете что-то вроде этого:

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)

enter image description here

Я создал матрицу смежности из ваших данных.

...