我有4个不同城市的不同数据帧,但变量相同。我想在for city的数据集之间创建一个层次聚类。我已经尝试了以下代码在R中创建一个层次聚类:
hc <- hclust(dist(df))
hcd <- as.dendrogram(hc)
但是这段代码生成了一个数据帧的树状图。我想做的是做一个不同城市之间的树状图,所以我想聚类不同城市之间的行。我在互联网上搜索了很多,我找不到任何关于它的东西。有人知道如何解决这个问题吗?
我也尝试过合并数据集,但它也会生成具有相同城市的聚类。我想在不同城市之间进行聚类
下面是我的数据集的一个示例:
我有4个不同城市的不同数据帧,但变量相同。我想在for city的数据集之间创建一个层次聚类。我已经尝试了以下代码在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
发布于 2016-05-24 05:36:07
要单独对每个城市进行集群,需要选择包含给定城市数据的行子集。然后,分层聚类仅应用于子集。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]])
我希望这就是你需要做的。
https://stackoverflow.com/questions/37400025
复制相似问题