【发布时间】:2020-08-16 15:15:45
【问题描述】:
我想从包含几行的数据框 (mydata) 中创建一个邻接矩阵,并遵循以下规则:
- 以方阵形式列出所有字母
- 从对应行的其余列 (
p1 p2 p3 p4 p5) 计算和求和来自source的连接数。例如,b与a(2 行和 8 行)连接了 5 次。 - 如果
source中不包含字母,则连接值应为零。
数据框是:
mydf <- data.frame(p1=c('a','a','a','b','g','b','c','c','d'),
p2=c('b','c','d','c','d','e','d','e','e'),
p3=c('a','a','c','c','d','d','d','a','a'),
p4=c('a','a','b','c','c','e','d','a','b'),
p5=c('a','b','c','d','I','b','b','c','z'),
source=c('a','b','c','d','e','e','a','b','d'))
邻接矩阵应该如下
a b c d e g I z
a 4 2 1 3 0 0 0 0
b 5 1 3 0 1 0 0 0
c 1 1 2 1 0 0 0 0
d 1 2 3 2 1 0 0 1
e 0 2 1 3 2 1 1 0
g 0 0 0 0 0 0 0 0
I 0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0 0
我有数百列和数千行。我希望有任何最快的方法在 R 中做到这一点
【问题讨论】:
标签: r dplyr igraph tidyr adjacency-matrix