2015-11-05 69 views
1

我有data.frame,例如:聚类其中R

test<-data.frame(matrix(c(1:5,2:6,3:7),nrow=3)) 

test<-cbind(rbind(exp(test),test),rbind(test,2*test)) 
test 
#   X1   X2  X3  X4  X5 X1 X2 X3 X4 X5 
# 1 2.718282 54.598150 20.08554 403.42879 148.4132 1 4 3 6 5 
# 2 7.389056 148.413159 54.59815 20.08554 403.4288 2 5 4 3 6 
# 3 20.085537 7.389056 148.41316 54.59815 1096.6332 3 2 5 4 7 
# 4 1.000000 4.000000 3.00000 6.00000 5.0000 2 8 6 12 10 
# 5 2.000000 5.000000 4.00000 3.00000 6.0000 4 10 8 6 12 
# 6 3.000000 2.000000 5.00000 4.00000 7.0000 6 4 10 8 14 

和我的距离矩阵

dist(test) 
#    1   2   3   4   5 
# 2 471.181726             
# 3 1019.716766 714.553473          
# 4 425.980071 427.331552 1102.568122       
# 5 428.325768 426.014214 1101.559808 8.062258    
# 6 427.427492 425.995993 1100.387152 10.000000 8.062258 

我有层次聚类(hclust(dist(test))),我想放入一个组中,例如距离低于10的所有行(这里例如是4和5和6)

但实际上,我的data.frame比这个大得多,我想要做自动盟友。

+1

目前还不清楚你想达到什么。 – 2015-11-05 10:50:23

+0

请说明究竟需要做什么。 – JRodDynamite

回答

0

首先:保存您的层次聚类。

tree <- hclust(dist(test), method="complete") 

注意我选择了complete联动方法。你可以阅读更多关于为什么它是如何工作HERE

二:砍倒在想要的高度(在你的情况,这是10):

cutree(tree, h=10) 
# 1 2 3 4 5 6 
# 1 2 3 4 4 4 

正如你可以看到这个返回集群的载体。在这种情况下,4,5,6全部与您想要的相同群集4。选择method="complete"确保一个群集中所有点之间的最大距离是您用h=10指定的值。