[英]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,它顯示特定AuthorID
與ThreadID
另一個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.