【发布时间】:2019-11-26 13:32:52
【问题描述】:
假设我有一个数据表
data = data.table(city = c("NYC", "LA", "Hawaii", "Essex"),
population = c(10, 9, 1, 2)
)
我对它应用 k-means,得到质心和标签,经过操作后得到
data = data.table(city = c("NYC", "LA", "Hawaii", "Essex"),
population = c(10, 9, 1, 2),
cluster = c(1, 1, 2, 2),
centroids = c(9.5, 1.5)
)
我们在哪里
cluster_centroids <- c(9.5, 1.5)
cluster_labels <- c(1, 2)
如何按降序重新标记簇列的标签,以便所需的结果如下所示:
data = data.table(city = c("NYC", "LA", "Hawaii", "Essex"),
population = c(10, 9, 1, 2),
cluster = c(2, 2, 1, 1),
centroids = c(9.5, 1.5)
)
我想根据质心的值对它们进行排序。
我希望标签与质心一起使用,人口越高,标签就越高。 (对于有k 集群并且cluster 列值中没有顺序的一般情况,请考虑这一点。例如,原始集群列的顺序可能像1 是人口最多的城市,k是第二个人口稠密的城市,等等)
我不想对数据表的行进行排序。我想将 NYC 的标签从 1 更改为 2,将夏威夷的标签从 2 更改为 1。像 (1, 2) 映射到 (2, 1) 以便人口最多的城市被标记为最大标签,并且人口最少的城市标有 1
实际问题中的簇数不是 2。我只是想保持简单。
【问题讨论】:
-
我想你在找
setorder()
标签: r sorting data.table mapping