Предупреждение / ошибка при импорте .sav

У меня работают две версии SPSS. SPSS 11 работает в Windows XP и SPSS 20 работает в Linux. Обе копии SPSS работают нормально. Файлы, созданные в любой из версий SPSS, открываются без инцидентов в другой версии SPSS. I.E. - Я могу без проблем создать файл .sav с помощью SPSS 20 в Linux и открыть его в SPSS 11 в Windows.

Но если я создаю файл .sav с помощью SPSS 20 и импортирую данные в R или PSPP (в Linux), я получаю кучу предупреждений. Кажется, что данные импортируются правильно, но меня беспокоят предупреждения. Я не вижу никаких предупреждений при импорте .sav из SPSS 11 или других отправленных мне файлов .sav. Многие аналитики в моей компании используют SPSS, поэтому я получил файлы SPSS из разных версий SPSS и никогда раньше не видел этого предупреждения. Предупреждающие сообщения в PSPP и R почти идентичны, что имеет смысл. AFAIK, они используют одни и те же базовые библиотеки для импорта данных. Это ошибка R:

Warning messages:
1: In read.spss("test.sav") :
test.sav: File-indicated value is different from internal value for at least one of  the three system values.  SYSMIS: indicated -1.79769e+308, expected -1.79769e+308; HIGHEST: 1.79769e+308, 1.79769e+308; LOWEST: -1.79769e+308, -1.79769e+308   

2: In read.spss("test.sav") :
test.sav: Unrecognized record type 7, subtype 18 encountered in system file

Файл .sav действительно прост. В нем две колонки, тупой и тупой. Оба являются целыми числами. Первые два содержат два значения 1.0. Вторая строка содержит два значения 2,0. Могу предоставить файл по запросу (не вижу возможности загрузить его в SO). Если кто-то захочет увидеть сам файл, напишите мне в личку, и я пришлю его вам.

dumb  dumber
1.0   1.0
2.0   2.0

Мысли? Кто-нибудь знает, как лучше всего сообщить об ошибке R, не попав в список рассылки? :-)

РЕДАКТИРОВАТЬ: Я использовал термин «Ошибка» в строке заголовка. Я оставлю это, но я не должен был использовать это слово. Комментарии ниже правильно указывают на то, что сообщения, которые я вижу, являются предупреждениями, а не ошибками. Однако я чувствую, что это ясно указано в тексте вопроса выше. Очевидно, что формат данных SPSS со временем изменился, и SPSS / IBM не смогли задокументировать эти изменения, что является корнем проблемы.


person Choens    schedule 07.10.2011    source источник
comment
Никакого реального понимания, но я могу отразить желание получать список этих предупреждений каждый раз, когда я импортирую из SPSS в R. без ошибок. Надеюсь, мы сможем разобраться в этом вопросе!   -  person Chase    schedule 07.10.2011
comment
Я рад слышать, что данные, которые вы видели, были импортированы правильно. Моя проблема в том, что я не могу позволить себе иметь ошибки, а работа с датами достаточно сложна, и я не хочу рисковать какими-либо ошибками из-за того, что может нам сказать это предупреждение. Я не могу сказать своему боссу, что мои кросс-таблицы немного ошибочны, потому что я использовал R, а не SPSS. В наши дни слишком сложно найти другую работу. :-)   -  person Choens    schedule 08.10.2011
comment
Хотя я сочувствую вашим комментариям о придирчивости списка R, я также согласен с другими комментаторами, что несправедливо считать это ошибкой в ​​R. R старается изо всех сил и предупреждает вас, что что-то может ошибаться. Я думаю, что если вы хотите попытаться исправить / диагностировать это самостоятельно, вам придется хорошо познакомиться с отладкой компонентов C кода R. Начните с отслеживания конкретной строки в коде C (т. Е. Строки 585 файла sfm-read.c). Выясните, что это за функция (read_machine_flt64_info), затем выполните отладку на уровне исходного кода ...   -  person Ben Bolker    schedule 08.10.2011
comment
(чтобы) установить точку останова в этой функции и пройти через нее при чтении соответствующего файла. (Я думаю, вам понадобится руководство по расширениям R для этой информации.) Если вы не настроены для этого (т. Е. Настроили среду отладки и вам удобна отладка кода C на уровне исходного кода), это будет тяжелая работа. Тем не менее, я не вижу, что у вас есть большой выбор - вы можете (1) покопаться и попытаться выяснить это самостоятельно [и я действительно думаю, что если вы столкнетесь с проблемой, когда будете работать над этим, вы столкнетесь с положительный прием в списке разработчиков R ...]; (2) нанять консультанта:   -  person Ben Bolker    schedule 08.10.2011
comment
(3) научитесь жить с предупреждениями.   -  person Ben Bolker    schedule 08.10.2011
comment
В ваших усилиях по выявлению проблемных подтипов и того, как они обнаруживаются и помечаются, вы должны помнить, что можно заставить R останавливать выполнение при предупреждении, и если вы настроили свое отладочное устройство, чтобы оно упало в browser(), вы можете затем осмотреть окружающую среду. Вы также должны иметь возможность запустить traceback(), чтобы идентифицировать функцию, вызываемую при появлении (обновленного) предупреждения.   -  person IRTFM    schedule 08.10.2011
comment
Я передумал предполагать, что это будет потенциально полезно. Чтобы быть уверенным, что вы знаете, что означает запись типа 7, подтипа 18, вам нужно будет увидеть что-то от IBM. Я зарегистрировался там и согласился не распространять что-либо в надежде, что они, возможно, задокументировали свой формат файла, а не утверждали, что поощряют более широкое использование. Их претензии бессмысленны. Они не задокументировали ни структуру записи, ни значение их типов и подтипов. Вместо этого они настаивают на том, чтобы вы использовали только их код, а не распространяли его.   -  person IRTFM    schedule 08.10.2011
comment
кстати, вы имеете в виду почти идентичные между [PSPP] и R выше?   -  person Ben Bolker    schedule 08.10.2011
comment
Да, в исходном посте я имел в виду PSPP, а не SPSS. Я исправил опечатку. Спасибо, что указали на это. Теперь все обретает смысл.   -  person Choens    schedule 11.10.2011
comment
Вариант 3, несомненно, самый простой, но мне он не нравится из-за среды, в которой я использую R.Если я не уверен в точности импорта данных, мне придется либо реализовать обходной путь, например, экспорт данных SPSS. в CSV перед импортом в R или докажите себе, что предупреждения не повлияли на целостность информации. Мне платят за обработку данных других людей. Я бы предпочел использовать R, но я не могу допустить, чтобы у них были какие-либо ошибки при импорте данных, и прямо сейчас я просто не уверен на 100%, что все импортируется точно.   -  person Choens    schedule 11.10.2011
comment
Возможный дубликат Прочитать файл SPSS в R   -  person Waldir Leoncio    schedule 28.02.2017


Ответы (2)


Это не сообщение об ошибке. Это всего лишь предупреждение. SPSS отказывается документировать свои форматы файлов, поэтому у людей нет мотивации отслеживать путем обратного проектирования структуру новых «подтипов». Невозможно подать отчет об ошибке, не будучи обжаренным, потому что ошибки нет ... кроме закрытого формата, и эту жалобу на ошибку следует подавать владельцам SPSS!

РЕДАКТИРОВАТЬ: R-Core - это группа добровольцев, которая очень серьезно относится к своим обязанностям. Он прилагает большие усилия для отслеживания всего, что влияет на стабильность систем или производит ошибочные вычисления. Если бы вы были готовы проявить немного больше уважения к авторам R и предложить возможность сотрудничества в списке рассылки R-devel для поиска решений этой проблемы без использования термина «ошибка», вы бы вызвали гораздо меньше враждебности. Возможно, найдется кто-нибудь, кто захочет посмотреть, можно ли изучить простой файл .sav, такой как тот, который вы создали, под шестнадцатеричным микроскопом, чтобы определить, какое бесконечное отрицательное значение ошибочно принимается за другое бесконечное отрицательное значение. Большая часть R-Core не имеет рабочих копий SPSS.

Вы можете предложить эту ссылку в качестве примера продукта других, которые пытались выполнить обратную разработку форматов SPSS .sav:

http://svn.opendatafoundation.org/ddidext/org.opendatafoundation.data/references/pspp_source/sfm-read.c

Изменить: 4/2015; Я видел недавнее добавление к ?read.spss файлу справки, которое ссылается на pkg: memisc: «Другой интерфейс, также основанный на кодовой базе PSPP, доступен в пакете memisc: см. Его справку для spss.system.file». Я успешно использовал функцию этого пакета (один раз) для файлов, созданных более поздними версиями SPSS.

person IRTFM    schedule 07.10.2011
comment
Я понимаю, что основная проблема - это формат файла SPSS. Я просто хочу быть абсолютно уверенным в том, что данные будут импортированы без ошибок или, если есть вероятность ошибки, что это такое. И под ошибкой я подразумеваю любую ситуацию, когда импортированные данные могут отличаться от того, что я интуитивно ожидал, в зависимости от того, как данные выглядят в SPSS и настроек, используемых в read.spss (). Я использую R в корпоративной среде. Обсуждение тонкостей GPL и того, почему R не виноват, если анализ моих клиентов идет наперекосяк, - это не то, чем я хочу заниматься. - person Choens; 08.10.2011
comment
Мое нежелание обсуждать это в списке рассылки R связано с комментариями, подобными комментариям DWin и Andrie. Многие участники списка рассылки R разделяют ваше отношение, но, как правило, менее вежливы, когда делятся ими. Я считаю такую ​​элитарность почти невыносимой. Я распространяю СОПО, используя его и показывая людям, что это работает, а не стоя на ящике для мыла. - person Choens; 08.10.2011
comment
Чертовы ограничения на количество персонажей. . . . Дата авторских прав на spss.c во внешнем пакете - 2000. Не просматривая все журналы изменений, возможно, этот код не претерпевал существенных изменений в течение долгого времени. Я собираюсь отправить электронное письмо владельцам, указанным в файле авторских прав, но они, возможно, больше не занимаются активной разработкой кода. Я ничего не знаю о форматах двоичных файлов обратного проектирования, но я готов узнать / помочь, если здесь есть кто-то, кто мог бы указать мне в правильном направлении. - person Choens; 08.10.2011
comment
Отправьте мне файл. Не должно быть так сложно разоблачить меня, используя имя Двина и долю кредита в комментарии Гэвина Симпсона к этому вопросу SO; stackoverflow.com/questions/6959862/. Мой реальный адрес не скрыт ни в одном из сообщений, которые я делал в R-help: stat.ethz.ch/pipermail/r-help/2011-October/thread.html - person IRTFM; 08.10.2011
comment
Спасибо. Не пытаясь вступить в драку, я просто устал от этого списка рассылки давным-давно. Я могу отправить файлы с примерами всем, кто хочет их посмотреть. Я создал идентичный файл с помощью SPSS 11. Этот файл импортируется без ошибок. Я посмотрел на них обоих в октете, но я немного не в своей лиге, работающей с бинарными файлами. Но наличие двух файлов должно упростить идентификацию того, что изменилось. Есть некоторые различия, но, не пройдя сначала код импорта, я не могу понять, почему он выдает предупреждение. - person Choens; 08.10.2011
comment
Я думаю, вам, вероятно, придется выполнять отладку на уровне исходного кода шаг за шагом для каждого файла, чтобы понять различия; Я не думаю, что просмотр самих файлов поможет сделать это, хотя czep.net/data/spssread и cvs.savannah.gnu.org/viewvc * оформить заказ * / pspp / doc / dev / system-file-format.texi? root = pspp & revision = 1.2 & content-type = text% 2Fplain может быть полезной отправной точкой ... - person Ben Bolker; 08.10.2011

Формат файла SPSS публично не документирован и может изменяться, но IBM SPSS предоставляет бесплатные библиотеки, которые могут читать и записывать файл формата SAV. Они маскируют любые изменения формата. Вы можете получить их на веб-сайте сообщества SPSS (вместе со многими другими бесплатными полезностями, включая интеграцию SPSS с R). Зайдите на www.ibm.com/developerworks/spssdevcentral и осмотритесь. Кстати, с 2000 года в файл sav были внесены существенные дополнения / изменения, хотя основные данные все еще могут быть прочитаны старыми версиями.

HTH, Джон Пек

person JKP    schedule 09.10.2011
comment
Вышеупомянутая ссылка является отличным размышлением о приверженности IBM поддержке SPSS. - person Dav Clark; 01.09.2016