我有4个不同的数据框用于不同的城市,但具有相同的变量。我想在城市的数据集之间建立一个层次结构的集群。我已尝试使用此代码在R:
中创建分层集群hc <- hclust(dist(df))
hcd <- as.dendrogram(hc)
但是这段代码生成了一个数据帧的树形图。我想要做的是在不同城市之间制作一个树状图,所以我想将行划分为不同城市之间的行。我在互联网上搜索了很多,我找不到任何关于它的东西。有谁知道如何解决这个问题?
我还试图合并数据集,但随后它也会生成具有相同城市的集群。我想在不同城市之间制作集群
我的数据集示例如下:
我有4个不同的数据框用于不同的城市,但具有相同的变量。我想在城市的数据集之间建立一个层次结构的集群。我已尝试使用此代码在R:
中创建分层集群hc <- hclust(dist(df))
hcd <- as.dendrogram(hc)
但是这段代码生成了一个数据帧的树形图。我想要做的是在不同城市之间制作一个树状图,所以我想将行划分为不同城市之间的行。我在互联网上搜索了很多,我找不到任何关于它的东西。有谁知道如何解决这个问题?
我还试图合并数据集,但随后它也会生成具有相同城市的集群。我想在不同城市之间制作集群
我的数据集示例如下:
colname_city col_1 col_2
[1,] Amsterdam 0.2 0.3
[2,] Rotterdam 0.3 0.5
[3,] Den Haag 0.4 0.2
[4,] Utrecht 0.2 0.1
[5,] Amsterdam 0.1 0.5
[6,] Rotterdam 0.2 0.5
[7,] Rotterdam 0.4 0.4
[8,] Utrecht 0.5 0.3
[9,] Utrecht 0.5 0.5
[10,] Den Haag 0.6 0.3
答案 0 :(得分:1)
要分别对每个城市进行聚类,需要选择包含给定城市数据的行的子集。然后,将层次聚类仅应用于子集。 data
是您的示例表。
city_hc <- function(city){
temp <- data[which(data$colname_city == city),]
hcd <- as.dendrogram(hclust(dist(temp)))
return(hcd)
}
为了获得所有城市的树状图,我们循环遍历各个层次。
hcds <- lapply(levels(data$colname_city), city_hc)
names(hcds) <- levels(data$colname_city)
结果包含所有树形图的列表。
str(hcds)
# List of 4
# $ Amsterdam: ..--[dendrogram w/ 2 branches and 2 members at h = 0.274, midpoint = 0.5]
# .. |--leaf "1"
# .. `--leaf "5"
# $ Den Haag : ..--[dendrogram w/ 2 branches and 2 members at h = 0.274, midpoint = 0.5]
# .. |--leaf "3"
# .. `--leaf "10"
# $ Rotterdam: ..--[dendrogram w/ 2 branches and 3 members at h = 0.274, midpoint = 0.75]
# .. |--leaf "7"
# .. `--[dendrogram w/ 2 branches and 2 members at h = 0.122, midpoint = 0.5]
# .. # |--leaf "2"
# .. # `--leaf "6"
# $ Utrecht : ..--[dendrogram w/ 2 branches and 3 members at h = 0.612, midpoint = 0.75]
# .. |--leaf "4"
# .. `--[dendrogram w/ 2 branches and 2 members at h = 0.245, midpoint = 0.5]
# .. # |--leaf "8"
# .. # `--leaf "9"
# plot a dendrogram
plot(hcds[[3]])
我希望这是你需要做的。