首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在R中建立不同数据帧之间的层次簇?

如何在R中建立不同数据帧之间的层次簇?
EN

Stack Overflow用户
提问于 2016-05-24 04:31:44
回答 1查看 121关注 0票数 0

我有4个不同城市的不同数据帧,但变量相同。我想在for city的数据集之间创建一个层次聚类。我已经尝试了以下代码在R中创建一个层次聚类:

代码语言:javascript
运行
复制
hc <- hclust(dist(df))
hcd <- as.dendrogram(hc)

但是这段代码生成了一个数据帧的树状图。我想做的是做一个不同城市之间的树状图,所以我想聚类不同城市之间的行。我在互联网上搜索了很多,我找不到任何关于它的东西。有人知道如何解决这个问题吗?

我也尝试过合并数据集,但它也会生成具有相同城市的聚类。我想在不同城市之间进行聚类

下面是我的数据集的一个示例:

我有4个不同城市的不同数据帧,但变量相同。我想在for city的数据集之间创建一个层次聚类。我已经尝试了以下代码在R中创建一个层次聚类:

代码语言:javascript
运行
复制
hc <- hclust(dist(df))
hcd <- as.dendrogram(hc)

但是这段代码生成了一个数据帧的树状图。我想做的是做一个不同城市之间的树状图,所以我想聚类不同城市之间的行。我在互联网上搜索了很多,我找不到任何关于它的东西。有人知道如何解决这个问题吗?

我也尝试过合并数据集,但它也会生成具有相同城市的聚类。我想在不同城市之间进行聚类

下面是我的数据集的一个示例:

代码语言:javascript
运行
复制
      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
EN

回答 1

Stack Overflow用户

发布于 2016-05-24 05:36:07

要单独对每个城市进行集群,需要选择包含给定城市数据的行子集。然后,分层聚类仅应用于子集。data是您的示例表。

代码语言:javascript
运行
复制
city_hc <- function(city){
    temp <- data[which(data$colname_city == city),]
    hcd <- as.dendrogram(hclust(dist(temp)))
    return(hcd)
}

为了获得所有城市的树状图,我们循环遍历所有级别。

代码语言:javascript
运行
复制
hcds <- lapply(levels(data$colname_city), city_hc)
names(hcds) <- levels(data$colname_city)

结果包含所有树状图的列表。

代码语言:javascript
运行
复制
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]])

我希望这就是你需要做的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37400025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档