2012-03-23 55 views
0

一旦使用hclust建立群集,然后使用cutree指定向下群集; 如何检索组成不同群集的成员?假设你创建了一个简单的层次化集群,那么哪个命令可以单独地检索这些元素组的叶子中的元素?从群集中检索成员(叶子)

我试着用table()但没办法......

回答

1

可以使用split功能:用于定义数据应如何分组的第二个参数,使用你的树砍。它将返回一个列表,其中每个元素是不同的集群。

hc <- hclust(dist(USArrests), "ave") 
ct <- cutree(hc, k=3) 

如果你只是想成员的名字:

split(names(ct), ct) 
# $`1` 
# [1] "Alabama"  "Alaska"   "Arizona"  "California" 
# [5] "Delaware"  "Florida"  "Illinois"  "Louisiana"  
# [9] "Maryland"  "Michigan"  "Mississippi" "Nevada"   
# [13] "New Mexico"  "New York"  "North Carolina" "South Carolina" 

# $`2` 
# [1] "Arkansas"  "Colorado"  "Georgia"  "Massachusetts" 
# [5] "Missouri"  "New Jersey" "Oklahoma"  "Oregon"  
# [9] "Rhode Island" "Tennessee"  "Texas"   "Virginia"  
# [13] "Washington" "Wyoming"  

# $`3` 
# [1] "Connecticut" "Hawaii"  "Idaho"   "Indiana"  
# [5] "Iowa"   "Kansas"  "Kentucky"  "Maine"   
# [9] "Minnesota"  "Montana"  "Nebraska"  "New Hampshire" 
# [13] "North Dakota" "Ohio"   "Pennsylvania" "South Dakota" 
# [17] "Utah"   "Vermont"  "West Virginia" "Wisconsin"  

,或者如果你想通过集群分割原始数据:

split(USArrests, ct) 
# $`1` 
#    Murder Assault UrbanPop Rape 
# Alabama   13.2  236  58 21.2 
# Alaska   10.0  263  48 44.5 
# Arizona   8.1  294  80 31.0 
# [...] 

# $`2` 
#    Murder Assault UrbanPop Rape 
# Arkansas   8.8  190  50 19.5 
# Colorado   7.9  204  78 38.7 
# Georgia   17.4  211  60 25.8 
# [...] 

# $`3` 
#    Murder Assault UrbanPop Rape 
# Connecticut  3.3  110  77 11.1 
# Hawaii   5.3  46  83 20.2 
# Idaho   2.6  120  54 14.2 
# [...]