为什么我的PCA没有工作?

时间:2015-03-13 00:00:22

标签: r pca

我有一个包含200行和20列的数据集,我希望在R中使用prcomp()执行PCA。但是这不起作用,因为我的第一列被列为整数{{ 1}}。第一列的数字介于0和4之间,表示用于获取数据集的加热类型。所以这也必须在PCA中使用,因为我知道加热的类型对其他19列有影响,但是我无法启动PCA,因为它被列为整数。我该如何解决这个问题?

该列有重要的信息,我也想使用这些信息,但我不能,因为它被列为整数而不是数字,而当我尝试as.numeric()时,它表示str(x)

我用

解决了它
"Error: (list) object cannot be coerced to type 'double'"

但我的PCR仍无效。

dat_test$heating<-as.numeric(as.character(dat_test$heating))
str(dat_test)

返回

data.prcomp<-prcomp(dat_test,scale.=TRUE,na.rm=TRUE)

我总共有2个NA值。这应该仍适用于Error in svd(x, nu = 0) : infinite or missing values in 'x' na.rm,但事实并非如此。

1 个答案:

答案 0 :(得分:0)

我知道你正在研究什么。某些分层建模似乎很普遍。所以prcomp没有na.rm参数。该函数使用na.action来实现此目的。

所以在研究了这个特定的解决方案之后 - 一点点 - 站在 Giants 的肩膀上,我发现了这一点。我认为它可能对你有用。我还建议你深入研究一下你正在尝试的方法。搜索会发现比你所知道的更多。欢呼声。

prcomp(na.omit(dat_test), scale = TRUE)