R 组单变量聚类
R Univariate Clustering by Group
我正在尝试找到一种按组对单变量数据进行聚类的方法。例如,在下面的数据中,我有两个故障代码(a 和 b)和每个分组的 6 个数据点。在图中,您可以看到对于每个故障代码,故障时间有 2 个不同的集群。手动这还不错,但我无法弄清楚如何使用更大的数据集(~100K 行和~30 个代码)执行此操作。我希望最终结果能给我每个簇的中心点和该簇中的代码数。
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))
我希望最终结果能给我类似下面的 table 的内容。
failure m1 m1count m2 m2count
a 1.5 3 5.5 3
b 8.5 3 14.5 3
这会做你想做的,假设每个故障组只有两个集群,尽管你可以在 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
我正在尝试找到一种按组对单变量数据进行聚类的方法。例如,在下面的数据中,我有两个故障代码(a 和 b)和每个分组的 6 个数据点。在图中,您可以看到对于每个故障代码,故障时间有 2 个不同的集群。手动这还不错,但我无法弄清楚如何使用更大的数据集(~100K 行和~30 个代码)执行此操作。我希望最终结果能给我每个簇的中心点和该簇中的代码数。
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))
我希望最终结果能给我类似下面的 table 的内容。
failure m1 m1count m2 m2count
a 1.5 3 5.5 3
b 8.5 3 14.5 3
这会做你想做的,假设每个故障组只有两个集群,尽管你可以在 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