2016-05-26 3 views
0

Мне нужно экспортировать набор данных в виде текстового файла для старинного пакетного процесса, который, вероятно, работает в Unix. Файл имеет один столбец, и все поля являются числовыми.Экспорт данных SAS в формате «Текст (MS-DOS)» в Excel.

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

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

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

+0

MS-DOS ?! Вы имеете в виду операционную систему Microsoft, которая была заменена Windows 95, 21 год назад? – MSalters

+0

Я считаю, что старинный пакетный процесс подбирает этот файл. Извините, я не знаю, является ли это msdos, возможно, Unix. –

+0

Мне просто нужен файл, который выйдет так же, как Excel будет экспортировать –

ответ

2

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

SAS internally names this 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; 
+0

Что относительно возвратов каретки и линейных каналов? Какой из них следует использовать? –

+0

В шестнадцатеричном состоянии возврат каретки будет «0D», а линия будет равна «0A». Вы должны использовать любой вариант кодирования, совместимый с вашей системой. –

1

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

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

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

if _n_=1 then put 'VAR1'; 

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