Чтение файла SPSS в R
Я пытаюсь изучить R и хочу добавить файл SPSS, который я могу открыть в SPSS.
Я попытался использовать read.spss
из foreign
и spss.get
из Hmisc
. Оба сообщения об ошибках одинаковы.
Вот мой код:
## install.packages("Hmisc")
library(foreign)
## change the working directory
getwd()
setwd('C:/Documents and Settings/BTIBERT/Desktop/')
## load in the file
## ?read.spss
asq <- read.spss('ASQ2010.sav', to.data.frame=T)
И полученная ошибка:
Ошибка в read.spss( "ASQ2010.sav", to.data.frame = T): ошибка чтение заголовка системного файла. Кроме того: Предупреждающее сообщение: В read.spss( "ASQ2010.sav", to.data.frame = T): ASQ2010.sav: позиция 0: символ `\ 000 '(
Кроме того, я попытался сэкономить файл SPSS как файл SPSS 7..av(ранее использовался SPSS 18).
Предупреждающие сообщения: 1: В read.spss( "ASQ2010_test.sav", to.data.frame = T): ASQ2010_test.sav: непризнанный тип записи 7, подтип 14 встречается в системном файле 2: В read.spss( "ASQ2010_test.sav", to.data.frame = T): ASQ2010_test.sav: непризнанный тип записи 7, подтип 18, встречающийся в системном файле
Ответы
Ответ 1
У меня была аналогичная проблема и она была решена после подсказки read.spss
.
Вместо этого вместо пакета memisc
вы можете импортировать переносимый SPSS файл:
data <- as.data.set(spss.portable.file("filename.por"))
Аналогично, для .sav файлов:
data <- as.data.set(spss.system.file('filename.sav'))
хотя в этом случае я, кажется, пропускаю некоторые строковые значения, в то время как переносимый импорт работает без проблем. Страница справки для spss.portable.file
утверждает:
Механизм импортера более гибкий и расширяемый, чем read.spss и read.dta пакета "foreign", поскольку большая часть разбора заголовков файлов выполняется в R. Они также адаптированы для загрузки эффективно больших наборов данных. Самое главное, объекты-импортеры поддерживают ярлыки, недостающие. Значения и описания, предоставляемые этим пакетом.
Ответ 2
read.spss
кажется немного устаревшим, поэтому я использовал пакет под названием memisc
.
Чтобы заставить это работать, выполните следующие действия:
install.packages("memisc")
data <- as.data.set(spss.system.file('yourfile.sav'))
Ответ 3
Я знаю, что этот пост старый, но у меня также были проблемы с загрузкой файла SPSS Qualtrics в R R. Код read.spss появился из PSPP давным-давно и не обновлялся через некоторое время. (И в коде Hmisc также используется read.spss(), поэтому вам не повезло.)
Хорошей новостью является то, что PSPP 0.6.1 должен читать файлы в полном порядке, пока вы укажете "Ширина строки" в "Short-255 (SPSS 12.0 и более ранних версиях)" на странице "Загрузить данные" в Qualtrics. Прочтите его в PSPP, сохраните новую копию, и вы должны быть в бизнесе. Неловко, но бесплатно.
,
Ответ 4
Похоже, что реализация R read.spss неполна или нарушена. Однако R2.10.1 лучше, чем R2.8.1. Похоже, что R расстраивается по пользовательским атрибутам в файле sav даже с 2.10.1 (последнее, что у меня есть). R также может не понимать поле кодировки символов в файле, и, в частности, оно, вероятно, не работает с файлами Unicode SPSS.
Вы можете попробовать открыть файл в SPSS, удалить любые настраиваемые атрибуты и сохранить файл.
Вы можете узнать, есть ли пользовательские атрибуты с помощью команды SPSS
отображать атрибуты.
Если это так, удалите их (см. команды VARIABLE ATTRIBUTE и DATAFILE ATTRIBUTE) и повторите попытку.
НТН,
Джон Пек
Ответ 5
Вы можете прочитать SPSS
файл из R
, используя вышеуказанные решения или тот, который вы сейчас используете. Просто убедитесь, что команда подается с файлом, чтобы он мог правильно читать. У меня была такая же ошибка, и проблема была в том, что SPSS не смог получить доступ к этому файлу. Вы должны убедиться, что путь к файлу верен, файл доступен и находится в правильном формате.
library(foreign)
asq <- read.spss('ASQ2010.sav', to.data.frame=TRUE)
Что касается предупреждающего сообщения, оно не влияет на данные. Тип записи 7 используется для хранения функций в новом программном обеспечении SPSS, чтобы старое программное обеспечение SPSS могло читать новые данные. Но не влияет на данные. Я использовал это много раз, и данные не теряются.
Вы также можете прочитать об этом на http://r.789695.n4.nabble.com/read-spss-warning-message-Unrecognized-record-type-7-subtype-18-encountered-in-system-file-td3000775.html#a3007945
Ответ 6
Вы также можете попробовать следующее:
setwd("C:/Users/rest of your path")
library(haven)
data <- read_sav("data.sav")
и если вы хотите прочитать все файлы из одной папки:
temp <- list.files(pattern = "*.sav")
read.all <- sapply(temp, read_sav)
Ответ 7
Если у вас есть доступ к SPSS, сохраните файл как .csv, поэтому импортируйте его с помощью read.csv
или read.table
. Я не могу вспомнить проблемы с импортом файла .sav. До сих пор он работал как шарм с read.spss
и spss.get
. Я полагаю, что spss.get
не даст разные результаты, так как он зависит от foreign::read.spss
Можете ли вы предоставить некоторую информацию о SPSS/R/Hmisc/иностранной версии?
Ответ 8
Другим решением, не упомянутым здесь, является чтение данных SPSS в R через ODBC. Вам нужно:
См. пример здесь. Однако я должен признать, что могут быть проблемы с очень большими файлами данных.
Ответ 9
Для меня это хорошо работает с помощью memisc!
install.packages("memisc")
load('memisc')
Daten.Februar <-as.data.set(spss.system.file("NPS_Februar_15_Daten.sav"))
names(Daten.Februar)
Ответ 10
Нет такой проблемы с пакетами, которые вы используете. Единственным требованием для чтения файла spss является поместить файл в файл формата PORTABLE. Я имею в виду, spss файл имеет расширение *.sav. Вам нужно преобразовать ваш файл spss в переносимый документ, который использует расширение *.por.
В http://www.statmethods.net/input/importingdata.html
Ответ 11
В моем случае это предупреждение было объединено с появлением новой переменной перед первым столбцом моих данных со значениями -100, 2, 2, 2,..., сдвигом соответствия между метками и значениями и удалением последней переменной. Решение, которое работало (с помощью SPSS), чтобы создать новую дамп-переменную в последнем столбце файла, заполнить его случайными значениями и выполнить следующий код:
(filename - это путь к файлу sav, и в моем случае исходный файл SPSS имел 62 столбца, поэтому 63 с дополнительной немой переменной)
library(memisc)
data <- as.data.set(spss.system.file(filename))
copyofdata = data
for(i in 2:63){
names(data)[i] <- names(copyofdata)[i-1]
}
data[[1]] <- NULL
newcopyofdata = data
for(i in 2:62){
labels(data[[i]]) <- labels(newcopyofdata[[i-1]])
}
labels(data[[1]]) <- NULL
Надеюсь, что приведенный выше код поможет кому-то другому.
Ответ 12
1)
Я нашел программу, stat-transfer, полезную для импорта файлов spss и stata в R.
Он решает проблему, указанную вами, путем преобразования spss в набор данных R. Также очень полезно для подмножества супер больших наборов данных на более мелкие части, которые могут быть использованы R. Не бесплатно, а очень полезный инструмент для работы с наборами данных из разных программ, особенно если у вас нет доступа к ним.
2)
В пакете Memisc также есть функция spss, которую стоит попробовать.
Ответ 13
Отключите ваш UNICODE в SPSS
Откройте SPSS без открытия каких-либо данных и запустите приведенный ниже код в редакторе синтаксиса
SET UNICODE OFF.
Откройте набор данных и сохраните его, чтобы удалить Юникод
read.spss('yourdata.sav', to.data.frame=T)
работает правильно, тогда