聚类分析-根据索引值将聚类质心与聚类中心项目名称匹配

我完成了聚类分析,并能够在数据集中正确地标记每个“项目”所属的聚类。

我还有一个群集中心索引值的列表,称为centroidList。

我正在尝试获取质心列表中的值,并产生一个称为簇质心的列,该列将我的索引值与“ Item”值匹配,然后填充该“ Item”值,但不清楚如何在R中进行此操作。

我尝试执行一些if / then语句,但是运气不佳。

有指针吗?

Items <-c("Item1","Item2","Item3","Item4","Item5",
          "Item6","Item7","Item8","Item9","Item10")
Cluster <-c(1,1,1,2,2,2,3,3,4,4)
df <- data.frame(Items,Cluster)

centroidList <-c(1,5,7,10) #These represent the index of the cluster centers
评论
  • “疯女人”
    “疯女人” 回复

    这是一个非常基本的R解决方案:

    unsplit(
      lapply(split(df, Cluster), 
             function(x) cbind(x, `Cluster Centroid`=intersect(paste0("Item", centroidList), x$Items))
             ), Cluster)
    #>     Items Cluster Cluster Centroid
    #> 1   Item1       1            Item1
    #> 2   Item2       1            Item1
    #> 3   Item3       1            Item1
    #> 4   Item4       2            Item5
    #> 5   Item5       2            Item5
    #> 6   Item6       2            Item5
    #> 7   Item7       3            Item7
    #> 8   Item8       3            Item7
    #> 9   Item9       4           Item10
    #> 10 Item10       4           Item10
    

    Created on 2020-05-23 by the reprex package (v0.3.0)

  • 自惭形秽、
    自惭形秽、 回复

    这可能是您追求的...

    library(dplyr)
    
    

    创建一个映射数据框

    df_cl_map <- data.frame(centroidList, Cluster = 1:4)
    
    

    只需进行左连接

    df %>% 
      left_join(df_cl_map) %>% 
      mutate(`Cluster Centroid` = paste0("Item", centroidList)) %>% 
      select(-centroidList)
    
    #> Joining, by = "Cluster"
    #>     Items Cluster Cluster Centroid
    #> 1   Item1       1            Item1
    #> 2   Item2       1            Item1
    #> 3   Item3       1            Item1
    #> 4   Item4       2            Item5
    #> 5   Item5       2            Item5
    #> 6   Item6       2            Item5
    #> 7   Item7       3            Item7
    #> 8   Item8       3            Item7
    #> 9   Item9       4           Item10
    #> 10 Item10       4           Item10
    

    Created on 2020-05-23 by the reprex package (v0.3.0)