我在将因子分数添加到原始数据集时遇到困难。根据{{3}}的描述,这根本不是一个困难的程序。但是,在我的情况下,我收到以下代码中的以下错误:
fa <- factanal(data, factors=2, rotation="promax", scores="regression")
data <- cbind(data, fa$scores)
Error in data.frame(..., check.names = FALSE) :
arguments imply differing number of rows: 889, 851
如果行号真的不一样,那么收到这个错误就不足为奇了,但是当我输入&#34; fa $ score&#34;并按Enter键,R显示所有889行。昏暗功能仍然会返回851:
dim(fa$scores)
[1] 851 2
请您澄清为什么我收到此错误,如果可能,我可以做些什么来成功地将因子分数添加到数据中?
谢谢!
答案 0 :(得分:0)
fa$scores
返回一个带有rownames的矩阵,您可以使用这些矩阵将数据连接/合并在一起。
首先,确保data
有rownames。如果没有,请给它虚拟名称,如:
rownames(data) <- 1:nrow(data)
然后运行fa <- factanal(...)
,并将fa$scores
转换为因子得分的数据框。如,
fs <- data.frame(fa$scores)
然后,为原始数据和rowname
添加fs
列:
data$rowname <- rownames(data)
fs$rowname <- rownames(fs)
然后左连接数据(使用dplyr包):
library(dplyr)
left_join(data, fs, by = "rowname)