使用cbind将因子得分添加到R中的数据集

时间:2016-11-02 05:35:19

标签: r factor-analysis

我在将因子分数添加到原始数据集时遇到困难。根据{{​​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

请您澄清为什么我收到此错误,如果可能,我可以做些什么来成功地将因子分数添加到数据中?

谢谢!

1 个答案:

答案 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)