2014-01-10 127 views
6

我需要將兩列矩陣重塑爲類似於鄰接矩陣的矩陣。 我有以下數據集:重塑矩陣以獲得網絡

firm_id_1 firm_id_2 
1   2 
1   4 
1   5 
2   1 
2   3 
3   2 
3   6 
4   1 
4   5 
5   4 
6   3 

等等... 4000不同firm_id

在第一列中,firm_id_1firm_id_2之間有直接鏈接。例如,firm_id = 1與firm_id = 6通過firm_id = 2間接連接(至第二度)至3直接連接(一級)至firm_id = 6,並間接連接至第二度間接連接至firm_id = 6, 3,等等...

我想中的R建立這個矩陣:

firm_id [1] [2] [3] [4] [5] [6] 
[1]   1 2 1 1 3 
[2]  1  1   2 
[3]   1    1 
[4]  1 
[5]  1 
[6]    1 

每個數字表示分離的網絡中的程度。這在R中可行嗎?

回答

8
library(igraph) 
g <- graph.edgelist(mat) 
shortest.paths(g) 

#  [,1] [,2] [,3] [,4] [,5] [,6] 
# [1,] 0 1 2 1 1 3 
# [2,] 1 0 1 2 2 2 
# [3,] 2 1 0 3 3 1 
# [4,] 1 2 3 0 1 4 
# [5,] 1 2 3 1 0 4 
# [6,] 3 2 1 4 4 0 
+1

完美。謝謝!你有什麼建議,我可以怎樣繪製firm_id = 1及其所有鏈接的網絡,並能夠看到它的直接和間接聯繫? – Plug4