从集群中提取组

Extracting a Group from a Cluster

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

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 进行比较,以便我可以获得所有成员的平均年龄,这也是数据集的一部分。

如果有人能帮助我解决我的问题,我将不胜感激。

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

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")