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