将数据转换为网络矩阵

convert data to matrix for a network

我有一个包含 30k 行的大型数据集,如下所示:

patno    Inentorname 

1001       A
1001       B
1002       A
1002       B
1003       C
1004       D
1004       E

我想要得到的是这样的:

   A  B  C  D  E 
A  0  2  0  0  0
B  2  0  0  0  0
C  0  0  0  0  0
D  0  0  0  0  1
E  0  0  0  1  0

有没有简单的方法可以在 R 或 python 中得到这个?

假设 DF 在末尾的注释中可重复显示

tab <- crossprod(table(DF))
diag(tab) <- 0
tab

给予:

           Inentorname
Inentorname A B C D E
          A 0 2 0 0 0
          B 2 0 0 0 0
          C 0 0 0 0 0
          D 0 0 0 0 1
          E 0 0 0 1 0

备注

Lines <- "
patno    Inentorname 
1001       A
1001       B
1002       A
1002       B
1003       C
1004       D
1004       E"
DF <- read.table(text = Lines, header = TRUE)