如何找到在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))