Я обнаружил пакет iterpc.Это быстро и делает комбинации.Вот мой пример кода:
df <- data.frame(author_id = c(2,4,8,16,32,16,128,256,512,8),
topic_id = c(101,101,101,101,301,301,501,501,501,501),
time = as.POSIXct(c("2014-08-16 20:20:11", "2014-08-16 21:10:00", "2014-08-17 06:30:10",
"2014-08-17 10:08:32", "2014-08-20 22:23:01","2014-08-20 23:03:03",
"2014-08-25 17:05:01", "2014-08-25 19:15:10", "2014-08-25 20:07:11",
"2014-08-25 23:59:59")))
Сначала я создаю уникальный список узлов (вершин графа) * 1004 *
node <- df %>% distinct(author_id, vendor) %>% rename(id = author_id)
Затем я создаю свой список ребер, используя iterpc следующим образом:
library(iterpc)
edge <- df %>% group_by(topic_id) %>% do(data.frame(getall(iterpc(table(.$author_id), 2, replace =TRUE)))) %>%
filter(X1 != X2) %>% rename(from = X1, to = X2) %>% select(to, from, topic_id)
Это сделано, я строю свой график:
library(igraph)
test_net <- graph_from_data_frame(d = edge, directed = F, vertices = node)
plot(test_net)