2014-11-24 64 views
4

對於10個視頻,我有data.frame,每列都是一個表示視頻類別的標記。例如,數據將顯示如下:R根據data.frame中的列創建鄰接矩陣

data <- data.frame(id=paste0("r", 1:10), A=sample(0:1,10,TRUE), B=sample(0:1,10,TRUE), C=sample(0:1,10,TRUE)) 
data 
    id A B C 
1 r1 1 0 1 
2 r2 0 0 0 
3 r3 0 1 0 
4 r4 1 1 0 
5 r5 0 0 0 
6 r6 1 0 1 
7 r7 1 0 1 
8 r8 0 1 1 
9 r9 0 0 1 
10 r10 1 0 0 

現在我想以基於標籤的一個鄰接矩陣,和值應具有相同標籤的視頻數量。例如,單元格A-C應爲3,因爲r1,r6r7具有相同的標記。最後,我想要一個輸出矩陣,如下所示:

 A B C 
A 5 1 3 
B 1 3 1 
C 3 1 5 

我該如何彙總數據?

回答

6

矩陣乘法應該在這裏

set.seed(1) 
dat <- data.frame(id=paste0("r", 1:10), A=sample(0:1,10,TRUE), B=sample(0:1,10,TRUE), C=sample(0:1,10,TRUE)) 

mat <- as.matrix(dat[-1]) 

t(mat) %*% mat 

編輯

或者在一個班輪(感謝@AnandaMahto)

crossprod(as.matrix(dat[-1])) 
+4

或者,更直接,'crossprod(如工作。矩陣(DAT [-1]))'。 – A5C1D2H2I1M1N2O1R2T1 2014-11-25 03:25:36