Добавление факторных баллов в набор данных в R с помощью cbind
У меня возникают трудности при добавлении факторных баллов к исходному набору данных. Это совсем не сложная процедура, как описано здесь. Однако в моем случае я получаю следующую ошибку в приведенном ниже коде:
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
Не могли бы вы уточнить для меня, почему я получаю эту ошибку, и, если возможно, что я могу сделать, чтобы успешно добавить коэффициенты к данным?
Спасибо!
1 ответ
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)