我有一个包含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
,但事实并非如此。
答案 0 :(得分:0)
我知道你正在研究什么。某些分层建模似乎很普遍。所以prcomp没有na.rm参数。该函数使用na.action来实现此目的。
所以在研究了这个特定的解决方案之后 - 一点点 - 站在 Giants 的肩膀上,我发现了这一点。我认为它可能对你有用。我还建议你深入研究一下你正在尝试的方法。搜索会发现比你所知道的更多。欢呼声。
prcomp(na.omit(dat_test), scale = TRUE)