Преобразовать data.frame в матрицу смежности (R) - PullRequest
0 голосов
/ 17 мая 2019

Я хочу преобразовать data.frame в матрицу смежности.В моих данных я получил статьи и авторов (несколько столбцов, по одному для каждого соавтора), где каждая строка представляет собой статью.Я хочу, чтобы авторы одной и той же статьи были связаны.

Структура данных теперь выглядит следующим образом:

data <- data.frame(Author1 = c("Alan", "Rebecca", "Micheal", "Dany", "Euron", "Alan"),
                   Author2 = c("Rebecca", NA, "Alan", "Euron", NA, "Dany"),
                   Author3 = c("Dany", NA, "Euron", "Micheal", NA, NA),
                   Author4 = c("Euron", NA, "Rebecca", NA, NA, NA),
                   Title = c("Eric's boat", "Top 100 boats", "Boats in the World", "Death and boats", "Boats and Dragons", "Boats"))

, которая дает такой вывод:

+---------+---------+---------+---------+--------------------+
| Author 1| Author2 | Author3 | Author4 | Title              |
+---------+---------+---------+---------+--------------------+
| Alan    | Rebecca | Dany    | Euron   | Eric's boat        |
| Rebecca | NA      | NA      | NA      | Top 100 boats      |
| Micheal | Alan    | Euron   | Rebecca | Boats in the world |
| Dany    | Euron   | Micheal | NA      | Death and boats    |
| Euron   | NA      | NA      | NA      | Boats and Dragons  |
| Alan    | Dany    | NA      | NA      | Boats              |
+---------+---------+---------+---------+--------------------+

Я хочуэто будет выглядеть так:

+---------+------+---------+---------+------+-------+
|         | Alan | Rebecca | Micheal | Dany | Euron |
+---------+------+---------+---------+------+-------+
| Alan    |    0 |       1 |       0 |    1 |     1 |
| Rebecca |    1 |       0 |       1 |    0 |     0 |
| Micheal |    1 |       1 |       1 |    1 |     1 |
| Dany    |    1 |       0 |       1 |    0 |     1 |
| Euron   |    1 |       0 |       1 |    1 |     0 |
+---------+------+---------+---------+------+-------+
...