#r #dataframe #statistics
Вопрос:
Я хочу выполнить факторный анализ с фреймом данных, содержащим несколько целых нулевых чисел. А head(df[1:10,1:20])
показано ниже:
library(corrplot)
library(psych)
library("psych")
library(ggplot2)
library(car)
df <- read.csv('salvia.csv', header = TRUE, sep = ',')
head(df[1:5,1:5])
Output:
able about actually again almost
1 2 2 0 8
2 0 2 2 2
3 0 1 0 0
4 2 5 5 3
5 0 3 0 2
Как вы видите, есть некоторые нулевые значения, но они важны для моего исследования. Когда я применяю функцию KMO, вывод выглядит следующим образом (просто фрагмент):
KMO(df)
Output:
able about actually again almost
NA NA NA NA NA
Warning message:
In cov2cor(Q) : diag(.) had 0 or NA entries; non-finite result is doubtful
Я пытался использовать
df[1:256] <- lapply(df[1:256], as.numeric)
но поскольку это уже числовой класс, это никак не повлияло на результат. Пожалуйста, как я могу сохранить нули для тестов? Я ввел этот же фрейм данных в SPSS, и он отлично работал, но я хочу выполнить весь свой анализ в R.
Комментарии:
1. Не могли бы вы предоставить полный
df
кадр данных ? Основываясь на предупреждающем сообщенииKMO()
, кажется, что в нем отсутствуют значения. Возможно, вам сначала потребуется удалить эти отсутствующие значения.as.numeric
не удалит пропущенные значения.2. Тип
help(KOM)
. Для аргументаr
требуется «матрица корреляции или матрица данных (будут найдены корреляции)».3. @Харрисон Джонс, привет. Я использовал
complete.cases()
функцию, и она вернула значение FALSE для значений na. Когда я пытаюсьsum(is.na(df))
, он возвращает 413. Но когда я пытаюсьna.omit(df)
, проблема остается той же самой. Боюсь, я не могу предоставить здесь полный кадр данных, так как он огромен.4. @Харрисон Джонс, как вы можете видеть в выходных данных, все значения возвращаются как NA. Но они есть. Действительно странно.
5. @HarrisonJones, когда я применил
dput()
, вывод вернул странную последнюю переменную X, полную NAs. Любопытно, что я не нашел эту переменную в исходном csv-файле. В любом случае, я удалил его в своем коде, и KMO сработал! Большое вам спасибо за вашу помощь!