如何解决colMeansx,na.rm = TRUE中的错误:即使将x转换为数值变量后,其也必须是数值
几天前我才刚刚开始学习R。我正在根据此处的教程(https://www.benjaminbell.co.uk/2018/02/principal-components-analysis-pca-in-r.html#further)在R控制台下使用R(4.0.3版)运行PCA
我的数据由2个分类变量(SPECIES
和STATE
)和4个数字变量组成,这些分类变量对我的PCA很重要,无法删除。
我将Excel数据( dataset1.csv )加载为 dataset2 ,并尝试使用以下方法将其转换为数值变量:
#1
d = data.frame(Species=c("EA","EH","ES"),x=runif(3),y=runif(3))
#2
d$Species = as.numeric(as.factor(d$Species))
#3
3. d = data.frame(State=c("Kelantan","Terengganu","Pahang","Johor"),x=runif(4),y=runif(4))
#4
d$State = as.numeric(as.factor(d$State))
请参阅教程:Principal Components Analysis:Error in colMeans(x,na.rm = TRUE) : 'x' must be numeric
但是,当我使用代码p <- prcomp(dataset2)
时,仍然出现错误:
colMeans(x,na.rm = TRUE)中的错误:“ x”必须为数字
非常感谢我帮助我同时使用分类变量和数字变量来运行PCA。
P / S:我以前曾与FactorMineR和Factoshiny合作,但我看不到可以帮助我将状态标记为不同图标和种类,不同颜色等的选项。
解决方法
我不知道您的问题是什么!我刚刚转换了您所做的操作,但是它可以工作。请复制并粘贴代码,然后运行。它将起作用。
d = data.frame(State=c("Kelantan","Terengganu","Pahang","Johor"),x=runif(4),y=runif(4))
> str(d)
'data.frame': 4 obs. of 3 variables:
$ State: Factor w/ 4 levels "Johor","Kelantan",..: 2 4 3 1
$ x : num 0.4941 0.0722 0.206 0.4999
$ y : num 0.266 0.177 0.133 0.442
> d$State = as.numeric(as.factor(d$State))
> d
State x y
1 2 0.49413147 0.2664495
2 4 0.07220937 0.1772339
3 3 0.20597378 0.1326426
4 1 0.49994185 0.4415824
> prcomp(d)
Standard deviations (1,..,p=3):
[1] 1.31234286 0.07598757 0.05476076
Rotation (n x k) = (3 x 3):
PC1 PC2 PC3
State 0.9837020 -0.04918652 0.1729481
x -0.1549119 -0.72014961 0.6763038
y -0.0912835 0.69207314 0.7160322
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。