Увеличил размер файла.sav с помощью функции haven::write_sav()

Я пишу SPSS .sav файлы из R, используя пакетный рай, который в целом очень хорошо работает для меня. Однако я заметил, что размер файла.sav, записанный на диск с помощью write_sav(), кажется, намного больше, чем необходимо. Всякий раз, когда я открываю и сохраняю файл.sav, написанный write_sav() в SPSS, размер файла уменьшается примерно в 10 раз!

Это важно для меня, так как я пишу довольно большие данные в SPSS для других, и иногда SPSS отказывается открывать очень большие файлы. Может быть, эта проблема не возникнет, если write_sav() будет хранить более эффективно "настоящим" нативным способом SPSS?

Кто-нибудь знает эту проблему и, возможно, имеет полезный комментарий к ней? Установка SPSS необходима для устранения этой проблемы

1 ответ

Это не ясно из документации Haven write_sav(), но похоже, что они сохраняются в виде несжатых файлов.sav. По умолчанию для (большинства) установок SPSS будет сохранение в виде сжатых файлов. SPSS имеет дополнительную опцию сжатия "zCompressed", которая создает файлы еще меньшего размера, но, как правило, их нельзя открыть вне SPSS.

Вы можете поэкспериментировать с этим вот так;

Save outfile = 'Uncompressed file.sav'
    /UnCompressed.
Save outfile = 'Compressed file.sav'
    /Compressed.
Save outfile = 'ZCompressed file.zsav'
    /ZCompressed.

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

См. https://www.ibm.com/support/knowledgecenter/en/SSLVMB_21.0.0/com.ibm.spss.statistics.help/syn_save_compressed_uncompressed.htm для получения дополнительной информации.

Если размер вывода - проблема, вы можете взглянуть на мой пакет readspss. Используя сжатие и zsav, вы сможете получить наилучшее возможное сжатие. Сжатие в сохраненных файлах зависит от того, как файл записан. В SPSS есть разные методы сжатия для хранения числовой информации. Числовые значения могут храниться только как двойные (без сжатия) или в виде сочетания двойных чисел и int8_t (сжатие 1). Zsav использовал zlib для сжатия всех исходных данных (сжатие 2). Восемь целых чисел имеют размер двойного, отсюда и разница в размере файла.

Какую форму имеют ваши фактические данные? Это кодовая страница или Unicode; и что делает Хейвен? Начиная с SPSS 16.0 и введения настройки UNICODE, ширина строкового поля увеличилась втрое при преобразовании из кодовой страницы в Unicode. Эту боль лучше всего переносить только один раз. Переведите свои данные в Unicode и оставайтесь там.

См. https://www.ibm.com/support/knowledgecenter/SSLVMB_26.0.0/statistics_reference_project_ddita/spss/base/syn_set_unicode.html для получения дополнительной информации.

Существует три варианта формата файлов SPSS (.sav):

  1. Несжатый (.sav). Это выходной сигнал гавани по умолчанию, но, по моему опыту, он используется редко.
  2. Сжатый (.sav). Это то, что использует большинство людей, и это был формат сохранения по умолчанию для SPSS на протяжении многих-многих лет.
  3. Zcompressed (.zsav, но иногда.sav). Добавлен несколько лет назад в SPSS, но, похоже, мало используется. Вы можете получить это из убежища, добавив compress=TRUE к write_spss()

Я отправил запрос на перенос, чтобы сделать сжатый (2) формат по умолчанию.

Другие вопросы по тегам