Создайте фрейм данных из метода кластеризации Тохера в r - PullRequest
0 голосов
/ 02 мая 2018

Я использовал пакет «biotools» для расчета кластеризации Тохера. У данных есть 17 вариантов, и они были разделены на 6 групп. Код и результат приведены ниже.

data(garlicdist)   
   garlic <- tocher(garlicdist)   
   garlic


>  Tocher's Clustering 

$`cluster 1`
[1] 8  9  12 4  10 2  7  15

$`cluster 2`
[1] 1  6  14

$`cluster 3`
[1] 11 13

$`cluster 4`
[1] 3 5

$`cluster 5`
[1] 16

$`cluster 6`
[1] 17

Теперь я хотел бы создать матричные данные из этой кластеризации Тохера, где сорта будут располагаться по порядку, а имя и номер кластера будут размещаться в соответствии с сортами, как показано в данных, приведенных на рис. «Распределение сортов». распространение сорта

Буду признателен, если кто-нибудь поможет мне сделать это.

1 Ответ

0 голосов
/ 03 мая 2018

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

  1. добавьте NA к каждому вектору в списке, чтобы каждый вектор имел одинаковую длину.
  2. объединить их в матрицу. Привести матрицу к столу
  3. свернуть их в пары имен и значений
  4. добавить столбец cluster_no, извлекая цифры из cluster
  5. сбросить NA

Финальный код:

library(biotools)
library(tidyverse)
library(stringr)

data(garlicdist)   
garlic <- tocher(garlicdist)
cluster_df <- garlic$clusters %>% 
  sapply("length<-", n = max(length(.))) %>% 
  as_tibble() %>% gather(cluster, variety) %>% 
  mutate(cluster_no = str_extract(cluster, "[:digit:]+")) %>% 
  drop_na()
...