簡體   English   中英

R DataFrame轉換成方形(對稱)矩陣

[英]R DataFrame into square (symmetric) matrix

我搜索了相關問題以找到答案,但還沒有找到解決方案。

所以這是我的示例矩陣:

input <- structure(c(1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0), .Dim = c(3L, 
5L), .Dimnames = list(c("X", "Y", "Z"), c("A", "B", "C", "D", 
"E")))

我想根據輸入矩陣的行將此矩陣轉換為正方形矩陣。 所以我想要的輸出應如下所示:

output <- structure(c(1, 2, 0, 2, 1, 0, 0, 0, 1), .Dim = c(3L, 3L), .Dimnames = list(c("X", "Y", "Z"), c("X", "Y", "Z")))

當然,對角線取值為1

最重要的是:輸出矩陣中i,j的值(如果i!= j)應對應於輸入矩陣中同一列中非零值的數量。

因此,X和Y的值應取值為2,因為在同一列A和B中X和Y的值均大於0。

感謝您的努力。 提前致謝!

只需對矩陣及其轉置進行矩陣乘法,然后將diag設置為1:

output <- input %*% t(input)
diag(output) <- 1

> output
  X Y Z
X 1 2 0
Y 2 1 0
Z 0 0 1

暫無
暫無

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

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