Подтвердить что ты не робот

Чтение файла 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, встречающийся в системном файле

4b9b3361

Ответ 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, сохраните новую копию, и вы должны быть в бизнесе. Неловко, но бесплатно.

alt text,

Ответ 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. Вам нужно:

  • IBM SPSS Statistics Data File Driver. Автономного драйвера достаточно.
  • Импортировать данные SPSS с помощью пакета RODBC в R.

См. пример здесь. Однако я должен признать, что могут быть проблемы с очень большими файлами данных.

Ответ 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) работает правильно, тогда