R - 在 hclust 中隔离具有特定特征的集群
R - Isolate clusters with specific characteristics in hclust
我已经使用 hclust 生成了一些数据的聚类树状图,但我需要隔离所有成对的聚类,即仅包含 2 个数据的所有聚类(第一个聚类在一起),即使它们可能与 "higher" 分支上的其他数据聚集在一起。有谁知道我该怎么做?
我在附图中突出显示了我想要隔离的集群,希望这能更好地解释它。
我希望能够隔离这些集群中的所有配对数据,以便能够比较集群的内容。例如查看其中哪些包含特定类型的数据。
FWIW,您可以像这样提取 "forks":
hc <- hclust(dist(USArrests), "ave")
plot(hc)
res <- list()
invisible(dendrapply(as.dendrogram(hc), function(x) {
if (attr(x, "members")==2)
if (all(sapply(x[1:2], is.leaf)))
res <<- c(res, list(c(attr(x[[1]], "label"), attr(x[[2]], "label"))))
x
}))
head( do.call(rbind, res) )
# [,1] [,2]
# [1,] "Florida" "North Carolina"
# [2,] "Arizona" "New Mexico"
# [3,] "Alabama" "Louisiana"
# [4,] "Illinois" "New York"
# [5,] "Michigan" "Nevada"
# [6,] "Mississippi" "South Carolina"
(只是结果的前 6 行)
我已经使用 hclust 生成了一些数据的聚类树状图,但我需要隔离所有成对的聚类,即仅包含 2 个数据的所有聚类(第一个聚类在一起),即使它们可能与 "higher" 分支上的其他数据聚集在一起。有谁知道我该怎么做?
我在附图中突出显示了我想要隔离的集群,希望这能更好地解释它。
我希望能够隔离这些集群中的所有配对数据,以便能够比较集群的内容。例如查看其中哪些包含特定类型的数据。
FWIW,您可以像这样提取 "forks":
hc <- hclust(dist(USArrests), "ave")
plot(hc)
res <- list()
invisible(dendrapply(as.dendrogram(hc), function(x) {
if (attr(x, "members")==2)
if (all(sapply(x[1:2], is.leaf)))
res <<- c(res, list(c(attr(x[[1]], "label"), attr(x[[2]], "label"))))
x
}))
head( do.call(rbind, res) )
# [,1] [,2]
# [1,] "Florida" "North Carolina"
# [2,] "Arizona" "New Mexico"
# [3,] "Alabama" "Louisiana"
# [4,] "Illinois" "New York"
# [5,] "Michigan" "Nevada"
# [6,] "Mississippi" "South Carolina"
(只是结果的前 6 行)