gpt4 book ai didi

r - 如何在树状图中提取具有高度的某个节点下的标签?

转载 作者:行者123 更新时间:2023-12-04 11:19:05 27 4
gpt4 key购买 nike

我有一个树状图,我想提取一个我已经知道其高度的节点下的所有标签。例如:

data = data.frame(point = c('A','B','C','D','E'), 
x = c(2,2.5,2.1,3,5),
y = c(3.1,4,5,6,2))
d = dist(as.matrix(data[, 2:3]))
hc = hclust(d,method = "ward.D2")
plot(hc, labels = data$point)

Dendrogram

我们知道所有节点的高度:
hc$height
# [1] 1.029563 1.345362 2.790161 4.584430

现在我想知道某个高度下的所有标签,例如高度等于1.029563,我期望结果 c("A", "B")并且高度等于 1.345362,我期望结果 c("C", "D") .

有人可以帮忙吗?

最佳答案

如果您引用 ?hclust你会看到对 merge 的解释有些令人困惑。组件是。在你给出的例子中:

hc$merge
# [,1] [,2]
# [1,] -1 -2
# [2,] -3 -4
# [3,] 1 2
# [4,] -5 3

并且:
hc$height
# [1] 1.029563 1.345362 2.790161 4.584430

您可以看到节点高度按从低到高的顺序排列。
因此,在该编号节点下组合的点是低于它的点:

for (node in 1:length(hc$height)) { # roll over the nodes
points <- hc$merge[1:node, ] # look at the relevant rows
points_under_node <- -points[points < 0] # negative values are points
print(points_under_node) # points numbers
print(c("node = ", node)) # node number
print(data$point[points_under_node]) # point names under node
}

有点不确定,但我希望这能说明问题。

关于r - 如何在树状图中提取具有高度的某个节点下的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57872758/

27 4 0