如何找到在R中产生最大colMeans的簇?
我有一个像这样的数据框如何找到在R中产生最大colMeans的簇?,r,k-means,R,K Means,我有一个像这样的数据框 V1 V2 V3 1 1 1 2 2 0 1 0 3 3 0 3 .... 我有一个与数据帧中的行数长度相同的向量(这是kmeans的集群,如果有关系的话) 从中我可以得到每个集群的colMeans,如 cm1 <- colMeans(df[fit$cluster==1,]) cm2 <- colMeans(df[fit$cluster==2,]) 因为对于数据帧的第一列,第一个簇的列平均值为3,而第二个簇的列平均值为0.5。如果簇向
V1 V2 V3
1 1 1 2
2 0 1 0
3 3 0 3
....
我有一个与数据帧中的行数长度相同的向量(这是kmeans的集群
,如果有关系的话)
从中我可以得到每个集群的colMeans
,如
cm1 <- colMeans(df[fit$cluster==1,])
cm2 <- colMeans(df[fit$cluster==2,])
因为对于数据帧的第一列,第一个簇的列平均值为3,而第二个簇的列平均值为0.5。如果
簇
向量的长度与“df”的行数相同,将数据按“簇”列拆分为列表
lst1 <- lapply(split(df, fit$cluster), function(x) stack(colMeans(x)))
dat <- do.call(rbind, Map(cbind, cluster = names(lst1), lst1))
aggregate(values ~ ind, dat, FUN = which.max)
数据
df
1 2 1...
lst1 <- lapply(split(df, fit$cluster), function(x) stack(colMeans(x)))
dat <- do.call(rbind, Map(cbind, cluster = names(lst1), lst1))
aggregate(values ~ ind, dat, FUN = which.max)
library(dplyr)
library(tidyr)
df %>%
mutate(cluster = fit$cluster) %>%
pivot_longer(cols = -cluster) %>%
group_by(cluster, name) %>%
summarise(value = mean(value), .groups = 'drop') %>%
arrange(name, desc(value)) %>%
group_by(name) %>%
slice_head(n = 2)
df <- structure(list(V1 = c(1L, 0L, 3L), V2 = c(1L, 1L, 0L), V3 = c(2L,
0L, 3L)), class = "data.frame", row.names = c("1", "2", "3"))
fit <- structure(list(cluster = c(2, 2, 1)), class = "data.frame",
row.names = c(NA,
-3L))