我想创建一个层次结构集群,以显示职业类型以及从事这些职业的人在银行帐户中的余额。 我是一个包含两个变量的数据集,即工作和平衡:
job balance
1 unemployed 1787
2 services 4789
3 management 1350
4 management 1476
5 blue-collar 0
6 management 747
7 self-employed 307
8 technician 147
9 entrepreneur 221
10 services -88
我希望结果看起来像这样:
其中A,B,C等是工作类别。
任何人都可以帮我开始这个问题或给我一些帮助吗?
我不知道如何开始。
谢谢!
答案 0 :(得分:0)
您可以先使用dist
和hclust
函数。
df <- read.table(text = " job balance
1 unemployed 1787
2 services 4789
3 management 1350
4 management 1476
5 blue-collar 0
6 management 747
7 self-employed 307
8 technician 147
9 entrepreneur 221
10 services -88")
dist
计算每个元素之间的距离(默认情况下为欧氏距离):
distances <- dist(df$balance)
然后您可以使用上面生成的距离矩阵对值进行聚类:
clusters <- hclust(distances)
默认情况下,hclust将complete-linkage clustering应用于您的数据。 最后,您可以将结果绘制成一棵树:
plot(clusters, labels = df$job)
在这里,我们将所有条目聚集在数据框中,这就是为什么某些作业重复的原因。如果您希望每个作业只有一个值,则可以使用tapply
:
means <- tapply(df$balance, df$job, mean)
然后将作业聚在一起:
distances <- dist(means)
clusters <- hclust(distances)
plot(clusters)
然后,您可以尝试使用其他距离度量或其他聚类算法(有关其他方法,请参见help(dist)
和help(hclust)
)。