从r中的Tocher的clustring方法创建数据框

时间:2018-05-02 16:37:58

标签: r dataframe cluster-analysis

我用“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的聚类中创建一个矩阵数据,其中各种类型将按顺序排列,聚类名称和聚类编号将根据图片“品种分布”中显示的以下数据进行放置。{{3 }}

如果有人帮我这样做,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

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

  1. 将NAs添加到列表中的每个向量,以便每个向量具有相同的长度。
  2. 将它们组合成一个矩阵。强制矩阵切换
  3. 将它们折叠为成对的名称和值
  4. 通过提取cluster
  5. 中的数字来添加一列cluster_no
  6. 删除NAs
  7. 最终代码:

    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()