Преобразование data.frame в список ребер для использования в диаграмме аккордов - PullRequest
1 голос
/ 22 октября 2019

Я хотел бы создать диаграмму аккордов, чтобы продемонстрировать отношения между различными проектами на основе их ключевых слов. Итак, у меня есть данные, которые выглядят так (где A, B, C представляют ключевые слова):

               A    B    C
Project  1     1    0    1 
Project  2     0    1    1 
Project  3     1    0    1

Чтобы создать диаграмму аккордов, мне нужно преобразовать мои данные в матрицу смежности или список ребер.

Я пытался использовать igraph в наборе данных со знаком, но он ожидает матрицу смежности, и я не могу понять, как преобразовать данные.

Матрица смежности хотела бы что-то вроде этого:

    A  B  C
A   -  0  1
B   0  -  1
C   2  1  -  

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

From  To
 A    C
 B    C
 A    C

Данные содержат 60 ключевых слов. Что бы вы предложили, есть решение этих проблем? Спасибо.

1 Ответ

0 голосов
/ 22 октября 2019

Один из способов создания списка ребер с использованием dplyr и tidyr может быть:

df %>%
 mutate_all(~ replace(., . == 0, NA)) %>%
 rowid_to_column() %>%
 pivot_longer(names_to = "variables", values_to = "values", -rowid, values_drop_na = TRUE) %>%
 group_by(rowid) %>%
 mutate(variables2 = if_else(row_number() == 1, "From", "To")) %>%
 ungroup() %>%
 select(-values) %>%
 pivot_wider(names_from = "variables2", values_from = "variables") %>%
 select(-rowid)

  From  To   
  <chr> <chr>
1 A     C    
2 B     C    
3 A     C  
...