从群集中提取组

时间:2019-12-18 10:18:00

标签: r cluster-analysis

我正在使用R进行聚类分析。 我使用Allbus数据集,从中提取了7行。 使用followig代码,我创建了集群

library("haven")
AllbusDatensatz <- read_sav("HSW/3. Semester/Statistik II/Fallstudie/AllbusAntworten.sav")

CDU <- AllbusDatensatz$pa22
CSU <- AllbusDatensatz$pa23
SPD <- AllbusDatensatz$pa24
FDP <- AllbusDatensatz$pa25
Linke <- AllbusDatensatz$pa26
Gruenen <- AllbusDatensatz$pa27
AfD <- AllbusDatensatz$pa28

UmbenannterDatensatz <- cbind(CDU, CSU, SPD, FDP, Linke, Gruenen, AfD)
BereinigterDatensatz <- na.omit(UmbenannterDatensatz)

AllbusCentroid <- clara(BereinigterDatensatz,4,metric = "manhattan")

我现在要从这四个集群中提取第一个集群的所有成员。 然后,我想将此列表与初始数据集AllbusDatensatz进行比较,以获取所有成员的平均年龄,这也是数据集的一部分。

如果有人可以帮助我解决我的问题,我将非常感激。

1 个答案:

答案 0 :(得分:1)

由于您没有提供任何数据,这里有一些虚假数据的示例:

library(cluster)
clarax <- clara(x,4,metric = "manhattan")

根据here的规定,您必须获取簇的向量:

clarax$clustering

并将其放入原始数据中,然后对所需的行进行子集化:

# add vector of clustering
x$clust <- clarax$clustering
# subset the part of cluster == 1
x_cl1 <- x[x$clust == 1,]

现在您可以计算所需的内容。

mean(x_cl1[,1])

请注意,此处的第一个群集定义为标记为1的群集。


有数据:

x <- structure(list(X1 = c(-4.58075844925284, 0.0652767299325834, 
-3.77639403053622, 2.74184342257295, -1.55283663415684, -0.646564270393359, 
1.98008127381616, 8.97937011921846, 17.0830608896667, -0.373624506395029, 
2.60144234508749, 1.32892095552686, 1.54997041572331, -5.94773087812292, 
8.30056236715301, 18.1001844129369, 24.1689939024213, 1.10899749796051, 
1.53087100550846, -6.04743527148338), X2 = c(52.8099714292224, 
38.3531449094573, 46.3760873669732, 51.7026666617339, 48.5273685430924, 
55.6277967599455, 51.2257527215893, 45.8741668783965, 46.805479767603, 
38.5446380799866, 33.9186743463602, 52.7066337605415, 55.2102957192513, 
69.4652121754147, 59.5307056986744, 57.3795425387994, 54.9687789881024, 
52.8506678644467, 50.5691711634846, 55.8544208074441), clust = c(1L, 
2L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 2L, 2L, 1L, 1L, 4L, 3L, 3L, 3L, 
1L, 1L, 1L)), row.names = c(NA, -20L), class = "data.frame")