将数据帧转换为邻接 matrix/edge 列表以进行网络分析
Converting a data frame into adjacency matrix/edge list for network analysis
我正在尝试将数据框从在线论坛转换为社交网络,但我不知道如何将数据转换为网络分析所需的邻接 matrix/edge 列表。
我的代码如下:
library(igraph)
graph.data.2002 <- as.matrix(data.2002[,2:3])
g.2002 <- graph.data.frame(graph.data.2002, directed=FALSE)
plot(g.2002, vertex.size = 1, vertex.label=NA)
我正在使用 R 进行分析。当前的问题是作者通过 ThreadID 相互链接,但是在进行网络分析时,它包括 ThreadID 作为节点。理想情况下,如果作者与同一线程上的所有作者交互,我想要一个显示 1 的邻接矩阵/边列表。
(第一次发帖,如果有什么 missing/not 合适的请告诉我)
目前数据如下:
ThreadID AuthorID
659289 193537
432269 136196
572531 170305
230003 32359
459059 47875
635953 181593
235116 51993
您可以使用 inner_join
来获得边缘列表之类的东西(只需要进行一些温和的重新格式化)。
如果我没理解错的话,test 1
应该只有一个联系,在线程 659289 上的作者 193537 和 32359 之间。
test1 <- data.frame(ThreadID = c(659289, 432269, 572531, 659289),
AuthorID = c(193537, 136196, 170305, 32359))
test2 <- dplyr::inner_join(test1, test1, by = "ThreadID")[,-1]
test3 <- apply(test2, 2, as.character) #AuthorID as character will become vertex ID
检查你是否得到了预期的结果:
library(network)
test.network <- network(test3, directed = FALSE)
as.sociomatrix(test.network)
as.edgelist(test.network)
plot(test.network, label = test.network%v%"vertex.names")
我正在尝试将数据框从在线论坛转换为社交网络,但我不知道如何将数据转换为网络分析所需的邻接 matrix/edge 列表。
我的代码如下:
library(igraph)
graph.data.2002 <- as.matrix(data.2002[,2:3])
g.2002 <- graph.data.frame(graph.data.2002, directed=FALSE)
plot(g.2002, vertex.size = 1, vertex.label=NA)
我正在使用 R 进行分析。当前的问题是作者通过 ThreadID 相互链接,但是在进行网络分析时,它包括 ThreadID 作为节点。理想情况下,如果作者与同一线程上的所有作者交互,我想要一个显示 1 的邻接矩阵/边列表。
(第一次发帖,如果有什么 missing/not 合适的请告诉我)
目前数据如下:
ThreadID AuthorID
659289 193537
432269 136196
572531 170305
230003 32359
459059 47875
635953 181593
235116 51993
您可以使用 inner_join
来获得边缘列表之类的东西(只需要进行一些温和的重新格式化)。
如果我没理解错的话,test 1
应该只有一个联系,在线程 659289 上的作者 193537 和 32359 之间。
test1 <- data.frame(ThreadID = c(659289, 432269, 572531, 659289),
AuthorID = c(193537, 136196, 170305, 32359))
test2 <- dplyr::inner_join(test1, test1, by = "ThreadID")[,-1]
test3 <- apply(test2, 2, as.character) #AuthorID as character will become vertex ID
检查你是否得到了预期的结果:
library(network)
test.network <- network(test3, directed = FALSE)
as.sociomatrix(test.network)
as.edgelist(test.network)
plot(test.network, label = test.network%v%"vertex.names")