具有字符变量的 R 比例函数

标签 r dataframe cluster-analysis scale

我是 R 的新手 - 我在弄清楚如何缩放包含字符变量的数据集方面遇到了挑战。

但是,当我尝试使用缩放函数创建数据框时,出现错误:

 df<-scale(USArrests)
Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric

有没有办法创建一个带有字符变量的数据框,以便稍后在聚类分析中使用它?

km.res<-kmeans(df,4,nstart=10)

最佳答案

?scale()scale旨在使数字矩阵的列居中,有关详细信息,请参阅帮助条目。 然而,df <- USArrests足以将所需的内置数据集存储为对象 df (请参阅环境),如果您必须将其命名为 df。 比较以下内容:

df <- USArrests
# compare
head(df, n=5)
# to 
df1 <- scale(df)
head(df1, n=5)

如您所见,所有数字列现在都进行了缩放,而行 ID、Alabama、...、Wyoming 当然没有变化。顺便说一句,要检查所有变量的类,您可以使用 lapply(df, class) .

我想你应该没有问题然后调用km.res <- kmeans(df1,4,nstart=10) .检查对象类型 km.res .

老实说,我认为在运行之前kmeans()您应该再次查看帮助页面(例如 help(kmeans) )以了解参数 clusters , iter , ... 此外,我认为调查为什么或为什么不在上一步中将数据居中是个好主意。在任何情况下,都可以运行 kmeans()具有中心 (df1) 和非中心 (df) 数据。为什么这些备选方案之一更合适是非常重要的。

编辑:建议在运行算法之前设置种子(例如 set.seed(09102021))。这样做可以确保结果的可重复性。

关于具有字符变量的 R 比例函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69136572/

相关文章:

sql - 在 Sqlite 中使用 REGEX 匹配和替换字符串?

python - 如何使用 Python/Pandas 将数据框的其他行合并到当前行

python - 为 K 均值聚类生成随机 (x,y) 点

r - R函数Mclust慢

php - 寻找短期解决方案以通过额外的服务器提高网站性能

r - Shiny slider 定制值

r - 有轴,但直方图中没有框架(R :ggplot2)

r - data.table 列子集返回 0 行

python - Pandas Dataframe 通过分组连接

python - 从另一个具有不同索引的数据框中添加新列到 pandas 数据框中