将因子/簇级别组合成R中的特定大小的簇

时间:2017-07-31 21:45:32

标签: r dplyr subset cluster-analysis

我有一个简单的数据框可以通过运行:

重现
structure(list(cluster = c(1L, 2L, 3L, 4L, 4L, 5L, 6L, 4L, 4L, 
7L, 3L, 3L, 4L, 8L, 4L, 5L, 2L, 4L, 9L, 1L, 9L, 10L, 7L, 6L, 
4L, 11L, 7L, 10L, 7L, 11L, 12L, 8L, 9L, 1L, 6L, 8L, 4L, 2L, 6L, 
1L, 9L, 13L, 10L, 12L, 1L, 7L, 10L, 12L, 12L, 4L, 9L, 13L, 5L, 
7L, 5L, 8L, 11L, 14L, 1L, 12L, 10L, 14L, 11L, 4L, 12L, 11L, 4L, 
4L, 12L, 5L, 4L, 2L, 13L, 12L, 1L, 4L, 12L, 6L, 4L, 7L, 8L, 15L, 
3L, 8L, 7L, 12L, 8L, 2L, 7L, 7L, 2L, 13L, 6L, 6L, 8L, 8L, 11L, 
2L, 7L, 13L, 3L, 13L, 11L, 2L, 8L, 15L, 7L, 4L, 6L, 6L, 10L, 
3L, 8L, 11L, 4L, 9L, 1L, 12L, 6L, 11L, 6L, 6L, 14L, 7L, 8L, 2L, 
5L, 4L, 6L), clusterSize = c(8L, 9L, 6L, 19L, 19L, 6L, 13L, 19L, 
19L, 13L, 6L, 6L, 19L, 12L, 19L, 6L, 9L, 19L, 6L, 8L, 6L, 6L, 
13L, 13L, 19L, 9L, 13L, 6L, 13L, 9L, 11L, 12L, 6L, 8L, 13L, 12L, 
19L, 9L, 13L, 8L, 6L, 6L, 6L, 11L, 8L, 13L, 6L, 11L, 11L, 19L, 
6L, 6L, 6L, 13L, 6L, 12L, 9L, 3L, 8L, 11L, 6L, 3L, 9L, 19L, 11L, 
9L, 19L, 19L, 11L, 6L, 19L, 9L, 6L, 11L, 8L, 19L, 11L, 13L, 19L, 
13L, 12L, 2L, 6L, 12L, 13L, 11L, 12L, 9L, 13L, 13L, 9L, 6L, 13L, 
13L, 12L, 12L, 9L, 9L, 13L, 6L, 6L, 6L, 9L, 9L, 12L, 2L, 13L, 
19L, 13L, 13L, 6L, 6L, 12L, 9L, 19L, 6L, 8L, 11L, 13L, 9L, 13L, 
13L, 3L, 13L, 12L, 9L, 6L, 19L, 13L)), .Names = c("cluster", 
"clusterSize"), row.names = c(NA, -129L), class = "data.frame")

这是它的样子:

head(clusterdata)

   cluster clusterSize
1       1           8
2       2           9
3       3           6
4       4          19
5       4          19
6       5           6

我总共有15个聚类,共有129个观察结果。我需要让每个簇大小为9.如果最终没有15个簇,那也没关系。

换句话说,我想以产生大小不超过9的簇的方式组合簇,并且可能留下小于9的簇。原始大于9的簇应该被拆分但总是保持不变9作为大小并将剩余的放在“剩余”簇中。最初小于9的群集应与其他群集组合以形成大小为9的群集,同时将剩余群集放在“剩余”群集中。

我不知道如何在R中解决这个问题。任何想法都会非常感激......

0 个答案:

没有答案