簡體   English   中英

R - 兩列的加權鄰接矩陣

[英]R - weighted adjacency matrix from two columns

我有一個類似於以下的數據集:

AuthorID    ThreadID
   1           A
   2           A
   1           A
   2           A
   2           C
   3           B
   1           C
   4           B
   4           C
   4           C

其中AuthorID標識ThreadID的特定作者。 線程可以包含來自許多作者的帖子,作者可以在許多線程中發布。

我在R中加權鄰接矩陣,我可以使用igraph,它顯示特定AuthorIDThreadID另一個AuthorID進行通信的ThreadID 因此,對於這些數據,矩陣應如下所示( AuthorID為列和行標題):

   1  2  3  4
1  .  3  0  1
2  .  .  0  1
3  .  .  .  1
4  .  .  .  .

提前致謝!

這是使用基本R功能的解決方案。 首先,您的樣本數據采用易於復制/粘貼的格式

dd<-read.table(text="AuthorID    ThreadID
   1           A
   2           A
   1           A
   2           A
   2           C
   3           B
   1           C
   4           B
   4           C
   4           C
", header=T)

那你可以做

x <- xtabs(~ThreadID+AuthorID, unique(dd)); 
mm <- crossprod(x,x)
mm[lower.tri(mm, TRUE)] <- NA

要得到

        AuthorID
AuthorID  1  2  3  4
       1 NA  2  0  1
       2 NA NA  0  1
       3 NA NA NA  1
       4 NA NA NA NA

我們使用xtabs來計算出現次數。 我們確保使用unique因此我們不會在線程上對作者進行兩次計數(同意您所需的輸出。然后我們使用crossprod從作者線程表中獲取作者 - 作者頻率。最后我們使用lower.tri根據您想要的輸出擺脫下三角形。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM