首页 > 解决方案 > 执行 kproto 后的数据帧计算

问题描述

在对来自 ggplot2 的钻石数据集执行 k 原型之后,我想使用 dt[i, j, by] 命令计算来自 k 原型的 4 个集群中的每一个的中位价格。

# install.packages("clustMixType")
library(clustMixType);

# Check classes
sapply(diamonds, class);

#transform data frame
dat <- as.data.frame(diamonds);

#transform classes besides "numeric" and "factor"
non_numeric <- colnames(dat)[sapply(dat, class) != "numeric"];
dat[, non_numeric] <- data.table(sapply(dat[, non_numeric], as.factor), stringsAsFactors = TRUE);

# Check classes
sapply(dat, class);

# Perform k-prototypes
clustering <- kproto(x = dat, k = 4, verbose = TRUE, lambda = 2);

#checking total distance
clustering$tot.withinss

class(clustering)

# get the median price value for each final cluster obtained using a dt[i, j, by] command

clustering[clustering$cluster,median(clustering$price), keyby = "cluster"]

由于“集群”此时不是一个数据框(而且我没有设法将其转换为一个)我想知道如果我想使用所描述的过程(使用 dt[i, j, by]命令)。

有输入吗?

标签: rdataframe

解决方案


所以,我无法重现这个大例子,所以我只运行了 10 列的 diammonds 数据集,但是,也许这会有所帮助:

df1 <- data.frame(clustering[["centers"]][["price"]])
df2 <- data.frame(clustering[["data"]][["price"]])
df3 <-qpcR:::cbind.na(df1, df2)

如果(或何时)另一个人提出更好的答案,我将删除我的答案,或者如果这没有帮助。

还要检查:包clprofiles(不要在我的 R 版本上运行)


推荐阅读