我正在使用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
进行比较,以获取所有成员的平均年龄,这也是数据集的一部分。
如果有人可以帮助我解决我的问题,我将非常感激。
答案 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")