Экспорт набора данных SAS в формате Excel Text (MS-DOS)

Мне нужно экспортировать набор данных в виде текстового файла для древнего пакетного процесса, который, вероятно, работает в Unix. Файл имеет один столбец, и все поля являются числовыми.

Я хочу создать текстовый файл, эмулирующий способ, которым Excel создает файлы Text (MS-DOS):

Сохраняет книгу в виде текстового файла с разделителями табуляции для использования в операционной системе MS-DOS и обеспечивает правильную интерпретацию символов табуляции, разрывов строк и других символов. Сохраняет только активный лист.

Каков наилучший способ добиться этого?


person Ηλίας    schedule 26.05.2016    source источник
comment
МС-ДОС?! Вы имеете в виду операционную систему Microsoft, которая была заменена Windows 95 21 год назад?   -  person MSalters    schedule 26.05.2016
comment
Я считаю, что древний пакетный процесс собирает этот файл. Извините, я не знаю, если это msdos, возможно, Unix.   -  person Ηλίας    schedule 26.05.2016
comment
Мне просто нужно, чтобы файл выходил так же, как экспортировал бы Excel   -  person Ηλίας    schedule 26.05.2016
comment
Если у вас есть только один столбец, разделитель не имеет значения.   -  person Tom    schedule 26.05.2016
comment
Вы должны выяснить, каковы фактические требования к процессу, потребляющему данные. В частности, если он на самом деле не работает в MS-DOS, маловероятно, что он будет использовать кодовую страницу 437, специфичную для MS-DOS.   -  person Ross Ridge    schedule 26.05.2016


Ответы (2)


DOS использует страницу кодировки 437, которая представляет собой очень ограниченный набор символов. Если у вас нет специальных символов, все в порядке. Если у вас есть специальные символы, вам нужно изменить страницу кодировки на 437, чтобы гарантия совместимости персонажей. Это можно сделать как вариант dataset.

Внутреннее имя SAS для этого pcoem437. Вы можете увидеть разницу в выводе, изменив параметр encoding=.

data have;
    input var$;
    datalines;
ElNiño
ElNino
;
run;

proc export data=have(encoding=pcoem437)
            file='C:\Directory\want.txt'
            dbms=tab 
            replace;
run;
person Stu Sztukowski    schedule 26.05.2016
comment
Как насчет возврата каретки и перевода строки? Какой из них следует использовать? - person Ηλίας; 26.05.2016
comment
В шестнадцатеричном формате возврат каретки будет «0D», а перевод строки будет «0A». Вы должны использовать тот вариант кодирования, который совместим с вашей системой. - person Stu Sztukowski; 26.05.2016

Если у вас есть только один столбец, разделитель не имеет значения. Вы можете очень легко записать файл, используя шаг DATA.

data _null_;
   set have ;
   file 'myfile.txt' ;
   put VAR1 ;
run;

Если вы хотите добавить дополнительную строку с именем столбца, добавьте ее перед оператором PUT.

  if _n_=1 then put 'VAR1';

Если вы беспокоитесь о том, нужно ли вам генерировать LF или CRLF для конца строки, вы можете контролировать это с помощью параметра TERMSTR= в операторе FILE.

person Tom    schedule 26.05.2016