我有一个简单的数据框可以通过运行:
重现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中解决这个问题。任何想法都会非常感激......