Я хочу создать матрицу смежности из кадра данных (mydata
), состоящего из нескольких строк со следующим правилом:
- Вывести все буквы в виде квадратной матрицы
- Подсчет и сумма номер соединения от
source
от остальных столбцов (p1 p2 p3 p4 p5
) соответствующих строк. Например, 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