3

オンライン フォーラムのデータ フレームをソーシャル ネットワークに変換しようとしていますが、データをネットワーク分析に必要な隣接行列/エッジ リストに変換する方法がわかりません。

私のコードは次のとおりです。

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 を示す隣接行列/エッジ リストが必要です。

(初めての投稿なので、抜けていたり、不適切なところがあれば教えてください)

現在、データは次のとおりです。

ThreadID    AuthorID
659289  193537
432269  136196
572531  170305
230003  32359
459059  47875
635953  181593
235116  51993
4

1 に答える 1

5

を使用しinner_joinて、エッジ リストのようなものを取得できます (軽度の再フォーマットが必要です)。

私が正しく理解していればtest 1、スレッド 659289 にいた著者 193537 と 32359 の間の接続は 1 つだけであるはずです。

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")
于 2016-10-20T05:37:57.763 に答える