我对R还是很陌生,所以我遵循guide for cluster analysis,当我开始使用get_dist()时,我总是收到错误Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric
。当我删除带有<chr>
数据的列时,它可以正常工作,但事实是,我想保留这些标签,就像USArrests数据集中的“状态”标签一样。
我在here上发现了一个与我的问题非常相似的问题,但是没有评论或答案对我有帮助。我见过一些帖子,例如this one,其中提到尝试get_dist(x$x)
或as.numeric(as.character(x$x))
,但我必须承认,解决这一问题没有多大意义,也没有太多经验成功实施这些建议。
我无法显示完整的数据集,但是我可以提供head()
的结果,并且我注意到它与head(USArrests)
有所不同:
library(readxl)
Mother_2_ABS_Summer_2019_clean <- read_excel("~/.../Mother_2_ABS_Summer_2019_clean.xls",
range = "D1:H61")
head(Mother_2_ABS_Summer_2019_clean)
...1 Audience Genre Structure Proofreading
<chr> <dbl> <dbl> <dbl> <dbl>
ABS-P_29_S31 2 2 2.0 3
ABS_40_S50 3 3 3.5 3
ABS_57_S47 2 2 2.0 3
ABS_86_S48 4 3 3.0 4
ABS_143_S42 2 2 2.0 3
ABS-P_152_S49 2 1 1.0 4
head(USArrests)
Murder Assault UrbanPop Rape
<dbl> <int> <int> <dbl>
Alabama 13.2 236 58 21.2
Alaska 10.0 263 48 44.5
Arizona 8.1 294 80 31.0
Arkansas 8.8 190 50 19.5
California 9.0 276 91 40.6
Colorado 7.9 204 78 38.7
所以我注意到的是,在USArrests
中,状态标签没有归类为<chr>
,这与我对文档的标识不同。
按照指南进行操作,直到get_dist()
之前我都没有问题:
dat1 <- na.omit(Mother_2_ABS_Summer_2019_clean)
dat1 <- scale(dat1)
distance <- get_dist(dat1)
fviz_dist(distance, gradient = list(low = "#00AFBB", mid = "white", high = "#FC4E07"))
Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric
当我仅导入包含数字数据的4列并通过指南时,一切工作正常,我可以查看聚类结果。这里的问题是我想查看带有文档标识的可视化文件,否则,在查看它们时,结果并没有太大意义。
如果您有任何建议或意见,将不胜感激。
答案 0 :(得分:0)
未测试:您可以将这些标签分配为行名:
library(tidyverse)
Mother_2_ABS_Summer_2019_clean %>% remove_rownames %>% column_to_rownames(var="...1")
也许可以考虑更改第一列的名称,以使上面的内容更简洁,更可能起作用。然后,它与USArrests的格式相同。