簡體   English   中英

R根據data.frame中的列創建鄰接矩陣

[英]R create adjacency matrix according to columns from data.frame

我有10個視頻的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

現在我想基於標簽形成一個鄰接矩陣,其值應該是具有相同標簽的視頻數量。 例如,單元AC應為3,因為r1r6r7具有相同的標簽。 最后,我想要一個如下輸出矩陣:

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

我怎樣才能匯總數據?

矩陣乘法應該在這里工作

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]))

暫無
暫無

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

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