2017-01-16 10 views
0

私はcsv形式の2モード(X人物)ネットワークを持っています。このネットワークのpersonXpersonプロジェクションを作成し、いくつかのネットワーク・メジャー(近さと仲間の集中度を含む)を計算したいと思います。ネットワーク解析:csvからノードとエッジファイルを作成する方法

私の最初のステップは何ですか?私はノードとエッジの2つの別々のファイルを作成し、igraphパッケージを使用してRで解析を実行すると推測していますか?

私のデータ(my_data.csv)の超簡易バージョンです。

  • グラント、人
  • A、1
  • A、2
  • B、2
  • B、3
+3

はStackOverflowのへようこそ! [良い質問をする方法](http://stackoverflow.com/help/how-to-ask)と[再現可能な例を与える方法](http://stackoverflow.com/questions/)の情報をお読みください。 5963269)。これは他の人があなたを助けることをはるかに容易にします。 – Axeman

答えて

0

(1)igraphを使用してグラフを作成します。 (2)それを二者として宣言する。 (3)それを1モードグラフとして投影する。

el <- read.table(text = "Grant,Person 
         A,1 
         A,2 
         B,2 
         B,3", 
        sep = ",", header = T, stringsAsFactors=F) 
#1 
net <- graph.edgelist(as.matrix(el)) 
#2 
V(net)$type <- bipartite.mapping(net)$type 

あなたはグラフがそれを調べることにより、二部であることを確認することができます。

> net 
IGRAPH DN-B 5 4 -- 
+ attr: name (v/c), type (v/l) 
+ edges (vertex names): 
[1] A->1 A->2 B->2 B->3 

2行目の「B」は、それは二部グラフであることを示しています。

#3 
net1mode <- bipartite.projection(net)$proj2 

bipartite.projectionは、モードごとに1つのプロジェクトを2つ作成します。ノードは元のエッジリストの2番目の列にあるので、2番目の投影です。

par(mfrow=c(1,2)) 
plot(net,edge.arrow.size=0.5,main="Two mode") 
plot(net1mode,edge.arrow.size=0.5, main="One mode projection") 

enter image description here

+0

優れています。ありがとうございます – Reza

+0

もう1つ質問:ノードにいくつかの属性を割り当てることも可能ですか?例えば、性別、教育レベルなどを教えてください。そして、それらの属性に基づいてノードを色分けするかもしれませんか? – Reza

+0

[this site](http://www.shizukalab.com/toolkits/sna)を見ることをお勧めします。それはigraphの基本をカバーし、有用なリソースです。基本的には、 'V '演算子を使って属性を割り当てます。 'V(純)$ジェンダー< - c("男性 "、"女性 ")'。 – paqmo

0

あなたはグラフがデータを表現する方法を決定します。あなたが説明したところから、グラフのノードに人が表され、エッジがグラントを表すというアプローチがあります。その場合、同じ助成金を受けている人々のペアワイズを作成してください。エッジはiGraphではデフォルトで双方向であるため、各ペアを1回だけ必要とします。

+0

最終的に、私は人々をノードにしたい。同じ助成金を支払った場合、2人が結ばれます。したがって、私の例では理想的な出力は次のようになります。ノード:1,2,3およびエッジは次のとおりです。1-2,2-3 – Reza

+0

100000件のグラントで約300,000人がいます。人々のペアワイズリストを作成するのは苦しいでしょう。今質問は、Rやその他のソフトウェアが元のcsvファイルを私の理想的な出力に変換できるかどうかです。 – Reza

関連する問題