R按群的单变量聚类

时间:2016-11-08 15:03:17

标签: r cluster-analysis

我正在尝试找到一种按群组聚合单变量数据的方法。例如,在下面的数据中,我有两个失败代码(a和b)和每个分组的6个数据点。在图中,您可以看到每个故障代码都有2个不同的故障时间集群。手动这不是坏事,但我无法弄清楚如何使用更大的数据集(~100K行和~30个代码)来做到这一点。我希望最终结果能够为每个集群提供medoid以及该集群中的代码计数。

library(ggplot2)
failure <- rep(c("a","b"),each=6)
ttf <- c(1,1.5,2,5,5.5,6,8,8.5,9,14,14.5,15)
data <- data.frame(failure,ttf)
qplot(failure, ttf)
results <- data.frame(failure = c("a","b"), m1 = c(1.5,8.5), m2 = c(5.5,14.5))

enter image description here

我希望最终结果能给我一些类似下表的内容。

failure m1   m1count  m2    m2count
a       1.5  3        5.5   3
b       8.5  3        14.5  3

1 个答案:

答案 0 :(得分:1)

这可以做你想要的,假设每个故障组只有两个集群,尽管你可以在它适用于所有故障组的tapply中进行更改。

res2 <- tapply(data$ttf, INDEX = data$failure, function(x) kmeans(x,2))    
res3 <- lapply(names(res2), function(x) data.frame(failure=x, Centers=res2[[x]]$centers, Size=res2[[x]]$size))     
res3 <- do.call(rbind, res3)

res3
   failure Centers Size
1        a     5.5    3
2        a     1.5    3
11       b    14.5    3
21       b     8.5    3