从 r 中的教师聚类方法创建数据框

Create data frame from Tocher's clustring method in r

我使用“biotools”包来计算 Tocher 的聚类。数据有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

现在我想从这个 Tocher 的聚类中创建一个矩阵数据,其中品种将有序放置,簇名称和簇编号将根据品种放置,如下图所示的数据 "variety distribution"。 variety distribution

如果有人能帮助我做到这一点,我将不胜感激。

我认为您需要一个数据。frame/tibble,而不是矩阵,因为您通常不使用 cluster 字符列(在预期结果中)进行计算。您的集群列表在 garlic$clusters.

  1. 将 NA 添加到列表中的每个向量,以便每个向量具有相同的长度。
  2. 将它们组合成一个矩阵。将矩阵强制为 tibble
  3. 将它们折叠成名称和值对
  4. 通过提取cluster中的数字添加一列cluster_no
  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()