Формат, используемый в разделе INPUT при импорте файла CSV в SAS - PullRequest
0 голосов
/ 07 июня 2018

Я хотел бы получить список форматов, используемых для каждой переменной в разделе INPUT.Например, у нас есть файл CSV и мы вручную импортируем данные в SAS.В разделе кода у нас будет что-то вроде этого:

DATA WORK.SAS_data_1;
LENGTH
    A                  8
    B                $ 9
    C                  8
    D                  8
    E                  8 ;
FORMAT
    A                BEST1.
    B                $CHAR9.
    C                MMDDYY10.
    D                BEST1.
    E                BEST3. ;
INFORMAT
    A                BEST1.
    B                $CHAR9.
    C                MMDDYY10.
    D                BEST1.
    E                BEST3. ;
INFILE 'C:\Users\AppData\Local\Temp\SEG3592\SAS_data_1-ab6243ce7f064047b5e010c113d2f6a3.txt'
    LRECL=27
    ENCODING="WLATIN1"
    TERMSTR=CRLF
    DLM='7F'x
    MISSOVER
    DSD ;
INPUT
    A                : ?? BEST1.
    B                : $CHAR9.
    C                : ?? MMDDYY9.
    D                : ?? BEST1.
    E                : ?? BEST3. ;
RUN;

Я хотел бы знать, какие форматы используются в разделе INPUT, а именно: BEST1.для A, $ CHAR9.для B, MMDDYY9.для C и т. д.

Я нашел код, который суммирует формат и информацию для каждой переменной в наборе данных SASHELP.CARS, но я не могу найти формат, используемый в разделе INPUT.Кто-нибудь знает, где его найти?Время от времени (для числовых переменных) эти форматы могут быть разными.Вот код:

proc sql noprint ;
create table varlist as
select memname,varnum,name,type,length,format,informat, label
from dictionary.columns
where libname='SASHELP' and memname='CARS'
;
quit;

Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

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

Вы можете использовать оператор INFORMAT, чтобы прикрепить спецификацию informat к переменной в наборе данных.Однако эти метаданные на самом деле не имеют большого значения в SAS, за исключением, может быть, если вы все еще используете PROC FSEDIT.

Если вы хотите сохранить инструкции о том, как ваш текстовый файл (файлы CSV являются текстовыми файлами), то выследует хранить эту информацию в другом документе (или базе данных).Или просто сохраните программу SAS.

0 голосов
/ 07 июня 2018

Невозможно восстановить исходный входной код, используемый для определенного набора данных.Если в операторе INFORMAT использовались информаторы, вы можете их видеть (как вы это делали в своем примере).

Но определение того, был ли считан набор данных, выглядит так:

data have;
  input x;
  datalines;
1
2
3
4
5
;;;;
run;

Или вот так:

data have;
  input @1 x 1.;
datalines;
1
2
3
4
5
;;;;
run;

Или даже так:

data have;
  input @1 x 12.;
datalines;
1
2
3
4
5
;;;;
run;

В SAS все будет отображаться абсолютно одинаково и иметь абсолютно идентичные метаданные.Единственный способ узнать, как они вводились, - это получить доступ к программе ввода и зарегистрировать ее.

...