我有一个超过5000个观测数据帧。在我尝试使用分层聚类分析我的数据时,我有8个聚类,其中一些聚类包含几个100或1000个单独的观察。
# Cut tree into 8 groups
cutree_hclust <- cutree(hclust.unsupervised, k = 8)
# Number of members in each cluster
table(cutree_hclust)
接下来是每个群集大小的说明:
cutree_hclust
1 2 3 4 5 6 7 8
867 61 14 310 1135 432 119 5
为了了解不同群集中每个观察的变量组合,我认为将8个群集作为数据帧可能是一个想法,因此我可以单独分析它们。这是因为我不知道不同列中的不同行是什么,因此不知道整个datafram(Complete_df)中的模式是什么。
但是,我如何制作这些新的数据帧呢?
我可以通过fx:
看到我认为不同群集中的行rownames(MY_df)[cutree_hclust == 7]
[1] "60" "72" "92" "97" "110" "210" "211" "267"
[9] "565"
但如果我输入:
h_clust <- as.dataframe( rownames(MY_df)[cutree_hclust == 7])
我只获得该群集中哪些行的视图(作为列表),并且不包括所有其他列。
如何在我的数据框中选择这些特定行:Complete_df - 以便我可以看到每个群集的整体变量组合是什么?
我尝试了以下内容:
rn <- rownames(MY_df)[cutree_hclust == 7]; subset(Complete_df, rn %in% rownames(MY_df))
- 来自: R how to select several rows to make a new dataframe
和
Clust_7 <- rownames(MY_df)[cutree_hclust == 7]
Clust_7_df <- data.frame(matrix(unlist(Clust_7), nrow=9, byrow=T))
上述尝试没有奏效。
我期待听到任何可以提供帮助的人的反馈 - 因为我无法为自己解决这个问题:-)
答案 0 :(得分:2)
我认为您的目标是将群集分成单独的数据框架。如果是这样,以下内容可能有所帮助。
它使用USArrests
数据。仅显示最终输出的一部分。
hc <- hclust(dist(USArrests), "ave")
k <- 8
cutree_hclust <- cutree(hc, k = k)
df_list <- lapply(1 : k, function(x) USArrests[which(cutree_hclust == x), ])
df_list
# [[1]]
# Murder Assault UrbanPop Rape
# Alabama 13.2 236 58 21.2
# Alaska 10.0 263 48 44.5
# Delaware 5.9 238 72 15.8
# Illinois 10.4 249 83 24.0
# Louisiana 15.4 249 66 22.2
# Michigan 12.1 255 74 35.1
# Mississippi 16.1 259 44 17.1
# Nevada 12.2 252 81 46.0
# New York 11.1 254 86 26.1
# South Carolina 14.4 279 48 22.5
#
# [[2]]
# Murder Assault UrbanPop Rape
# Arizona 8.1 294 80 31.0
# California 9.0 276 91 40.6
# Maryland 11.3 300 67 27.8
# New Mexico 11.4 285 70 32.1
答案 1 :(得分:0)
我以数据框mtcars
为例。
df <- mtcars
现在聚集df:
hclust.unsupervised <- hclust(dist(df))
用k = 8
创建它的cutreecutree_hclust <- cutree(hclust.unsupervised, k = 8)
str(cutree_hclust)
表明它是一个整数向量,簇号分配给df中每行的名称。
因此,最好将此向量作为附加列添加到原始数据框中:
df$cluster <- cutree_hclust
现在,您可以通过df $ cluster列值将此原始数据帧拆分为子数据帧列表:
df.list <- split(df, df$cluster)
我认为这个数据框列表包含了你想要的每个集群的子数据帧。
$`1`
mpg cyl disp hp drat wt qsec vs am gear carb cluster
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 1
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 1
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 1
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 1
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 1
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 1
Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 1
Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 1
Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 1
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 1
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 1
$`2`
mpg cyl disp hp drat wt qsec vs am gear carb cluster
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 2
$`3`
mpg cyl disp hp drat wt qsec vs am gear carb cluster
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 3
Duster 360 14.3 8 360 245 3.21 3.570 15.84 0 0 3 4 3
Camaro Z28 13.3 8 350 245 3.73 3.840 15.41 0 0 3 4 3
Pontiac Firebird 19.2 8 400 175 3.08 3.845 17.05 0 0 3 2 3
Ford Pantera L 15.8 8 351 264 4.22 3.170 14.50 0 1 5 4 3
$`4`
mpg cyl disp hp drat wt qsec vs am gear carb cluster
Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3 4
Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 4
Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3 4
Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2 4
AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2 4
$`5`
mpg cyl disp hp drat wt qsec vs am gear carb cluster
Cadillac Fleetwood 10.4 8 472 205 2.93 5.250 17.98 0 0 3 4 5
Lincoln Continental 10.4 8 460 215 3.00 5.424 17.82 0 0 3 4 5
Chrysler Imperial 14.7 8 440 230 3.23 5.345 17.42 0 0 3 4 5
$`6`
mpg cyl disp hp drat wt qsec vs am gear carb cluster
Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 6
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 6
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 6
Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 6
$`7`
mpg cyl disp hp drat wt qsec vs am gear carb cluster
Ferrari Dino 19.7 6 145 175 3.62 2.77 15.5 0 1 5 6 7
$`8`
mpg cyl disp hp drat wt qsec vs am gear carb cluster
Maserati Bora 15 8 301 335 3.54 3.57 14.6 0 1 5 8 8
由于df.list元素的名称是群集号,因此您可以获取群集3的数据帧,例如通过调用
df.list[[3]]
给出:
mpg cyl disp hp drat wt qsec vs am gear carb cluster
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 3
Duster 360 14.3 8 360 245 3.21 3.570 15.84 0 0 3 4 3
Camaro Z28 13.3 8 350 245 3.73 3.840 15.41 0 0 3 4 3
Pontiac Firebird 19.2 8 400 175 3.08 3.845 17.05 0 0 3 2 3
Ford Pantera L 15.8 8 351 264 4.22 3.170 14.50 0 1 5 4 3