2016-02-21 88 views
1

我是一個使用R進行社交網絡分析的基本程序員,並且有一些我不知道如何解決的信息。R - 網絡數據進出R-鄰接矩陣到邊緣列表格式

我有:

  1. 存儲爲與下面的信息的CSV文件鄰接矩陣: 一)行1戶與戶在通過資源共享彼此塔1相互作用。 b)互動是由親屬關係數字代表的關係。親屬關係越接近(或更強),數字越小。例如,1是親子親屬關係,100是親屬關係。沒有自我親屬關係。 C)文件片段:
 [,1] [,2] [,3] [,4] [,5] 
[1,] NA 100 2 1 100 
[2,] 4 NA 100 100 3 
[3,] 100 3 NA 2 4 
[4,] 100 1 5 NA 100 
[5,] 1 100 4 100 NA 

我所需要的:

  • 我需要此鄰接矩陣轉換成邊表具有三個列(「HH1」,「HH2」,「HHKinRank」),以完成額外的親屬關係計算。

  • 該邊緣列表必須保存爲新的csv文件以供進一步分析。

  • 我對列表最大的問題是它只需要列出數值。如果沒有聯繫(NA),那麼邊界列表是否會顯示?

  • 我做了什麼:

    我試圖csv文件分配給新的變量 HHKinRank.el < - read.csv( 「HouseholdKinRank.csv」)。

    當我這樣做時,最令人沮喪的組件是確定我可能不得不使用的庫。有許多功能命令,如融化,所以故障排除是一個問題,因爲我也可能會錯誤地分配值。

    我可以從邊緣列表轉到矩陣,但相反很難運行命令。

    謝謝你對此的任何幫助。

    回答

    0

    您可以使用R的network包進行此操作,也可以使用igraph

    library(network) 
    
    # create the example data 
    adjMat <- matrix(c(NA, 100, 2, 1, 100, 
            4, NA, 100, 100, 3, 
            100, 3, NA, 2, 4, 
            100, 1, 5, NA, 100, 
            1, 100, 4, 100, NA), 
           ncol = 5,byrow=TRUE) 
    
    # create a network object 
    net<-as.network(adjMat,matrix.type='adjacency', 
           ignore.eval = FALSE, # read edge values from matrix as attribute 
           names.eval='kinship', # name the attribute 
           loops=FALSE) # ignore self-edges 
    
    # convert to an edgelist matrix 
    el <-as.edgelist(net,attrname = 'kinship') 
    
    # relabel the columns 
    colnames(el)<-c("HH1", "HH2", "HHKinRank") 
    
    # check results 
    el 
         HH1 HH2 HHKinRank 
    [1,] 1 2  100 
    [2,] 1 3   2 
    [3,] 1 4   1 
    [4,] 1 5  100 
    [5,] 2 1   4 
    [6,] 2 3  100 
    [7,] 2 4  100 
    [8,] 2 5   3 
    [9,] 3 1  100 
    [10,] 3 2   3 
    [11,] 3 4   2 
    [12,] 3 5   4 
    [13,] 4 1  100 
    [14,] 4 2   1 
    [15,] 4 3   5 
    [16,] 4 5  100 
    [17,] 5 1   1 
    [18,] 5 2  100 
    [19,] 5 3   4 
    [20,] 5 4  100 
    
    # write edgelist matrix to csv file 
    write.csv(el,file = 'myEdgelist.csv')