在对ggplot2的钻石数据集执行了k型原型设计之后,我想使用dt [i,j,by]命令从k型原型计算四个集群中每个集群的中位数价格。
# 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 ,通过]命令)。
有输入吗?
答案 0 :(得分:0)
所以,我无法重现这个大例子,所以我只运行10列diammonds数据集,但是,也许这有一定帮助:
df1 <- data.frame(clustering[["centers"]][["price"]])
df2 <- data.frame(clustering[["data"]][["price"]])
df3 <-qpcR:::cbind.na(df1, df2)
如果(或何时)另一个人提出了更好的答案,我将删除我的,或者这没有帮助。
还请检查:软件包clprofiles
(不要在我的R版本上运行)