SAS: изменить набор данных с числом циклов в оператор добавления - PullRequest
0 голосов
/ 24 сентября 2018

ТЕМА: Измените набор данных с числом циклов на оператор добавления

У меня есть макрос, который будет зацикливаться и создавать новый набор данных со счетчиком позади.

Код такой:

PROC IMPORT OUT = WORK.out & i DATAFILE = "& dir / & name"
/ excelout /
СУБД = csv REPLACE;Разделитель = '09'x;не GetNames = нет;БЕЖАТЬ;

проверка данных & i (drop =% do k = 1% до & cnt; && col & k ..% end;
);
длина станции $ 10 напряжение $ 10 год 8 месяц $ 20 трансформатор $ 10 день $ 20 Дата Время MW_ImpMW_Exp MVAR_Imp MVAR_Exp MVA Power_Factor 8;Время форматирования хмммм .;установить и я.end = last;

В настоящее время скрипт сгенерирует около 4 наборов данных, если у меня есть 4 внешних файла по PROC IMPORT.

Что я хочу, это исключить создание нескольких наборов данных, нопросто добавьте их в основной файл.Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Присоединение, вероятно, так же просто, но если вы не хотите создавать много наборов данных для начала, вы можете использовать шаг данных для чтения сразу нескольких файлов, используя подстановочные знаки.Это устранит необходимость в циклическом просмотре файлов, но требует, чтобы файлы имели одинаковую структуру и не сохранялись в папке с другими файлами с аналогичными именами.Опция firstobs вызвала проблемы с сомом в моих тестах, но, как вы указали getnames=no в своем импорте, я думаю, вам это не нужно.

Фрагмент ниже вводит все файлы csv в c: \ test.

data test;
    infile "c:\test\*.csv" dsd delimiter='09'x;
    input varA $ varB $;
run;
0 голосов
/ 24 сентября 2018

Оператор добавления внутри цикла должен быть достаточным для достижения этой цели.SAS скопирует первый набор данных как базовый, поскольку он не существовал.

proc append base=test data=test&i force; run;
...