0

我在将因子分数添加到原始数据集时遇到了困难。正如这里所描述的,这根本不是一个困难的过程。但是,就我而言,我收到以下代码的以下错误:

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

如果行号确实不同,收到此错误也就不足为奇了,但是当我键入“fa$scores”并按回车时,R 会显示所有 889 行。dim 函数仍然返回 851:

dim(fa$scores)
[1] 851   2

您能否为我解释一下为什么我会收到此错误,如果可能的话,我可以做些什么来成功地将因子分数添加到数据中?

谢谢!

4

1 回答 1

0

fa$scores返回一个带有行名的矩阵,您可以使用该矩阵将数据连接/合并在一起。

首先,确保data有行名。如果没有,请给它起虚拟名称,例如:

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)
于 2016-11-02T06:57:33.750 回答