% MACRO ИМПОРТИРОВАТЬ CSV-ФАЙЛЫ В SAS - PullRequest
0 голосов
/ 06 июня 2018

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

Вот пример:

Данные_1:

A,B,C,D,E
2, Paul Twix, 5/9/2015, 2, 238
2, Paul Twix, 5/10/2015, 3, 238
2, Paul Twix, 5/11/2015, 4, 238

Данные_2:

A,B,C,D,E
2345678, Carolina Ferrera, 5/9/2015, 22, 123
2345678, Carolina Ferrera, 5/10/2015, 23, 123
2345678, Carolina Ferrera, 5/11/2015, 24, 123

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

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

Когда у меня есть небольшое количество файлов, я могу вручную настроить длину символьной переменной, но если у меня много файлов, и я определяю формат переменных на основе первого файла, некоторыепеременные будут обрезаны.Вот пример:

%macro import_main(inf,outdat);
DATA &outdat.;

INFILE &inf.
    LRECL=32767 firstobs=2
    TERMSTR=CRLF
    DLM=','
    MISSOVER
    DSD ;

INPUT
    A                : ?? BEST1.
    B                : $CHAR9.
    C                : ?? MMDDYY9.
    D                : ?? BEST1.
    E                : ?? BEST3. ;

FORMAT C YYMMDD10.;

RUN;
%mend import_main;
filename inf1 'C:\SAS_data_1.csv';
filename inf2 'C:\SAS_data_2.csv';


%import_main(inf1, work.SAS_data_1);
%import_main(inf2, work.SAS_data_2);

Этот код правильно отображает значения для SAS_data_1, но неправильно отображает имена строк в SAS_data_2.

Есть ли что-нибудь, чтобы избежать этой ошибки в% macro?

Спасибо.

...