Если вы не хотите использовать условия, я могу поделиться с вами этим макросом, который я использую с 3 лет:
%macro partitionner(Library=, Table=, nb_part=, nblig=, tabIntr=);
data
%do i=1 %to &nb_part;
&Library..&tabIntr.&i.
%end;
;
set &Library..&Table.;
%do i=1 %to %eval(&nb_part-1);
if _n_ >= %eval(1+(&i.-1)*&nblig.) and _n_ <= %eval(&i.*&nblig.)
then output &Library..&tabIntr.&i.;
%end;
if _n_>=%eval((&i.-1)*&nblig+1) then output &lib..&tabIntr.&nb_part.;
run;
%mend partitionner;
где:
- Библиотека: имя библиотеки, в которой находится таблица для разделения, и результаты.
- Таблица: имя таблицы для разделения.
- nb_part: количество таблиц, которые должны быть разбиты.являются результатами от разделения.
- nblig: количество строк в каждой выходной таблице.
- tabIntr: имя выходных таблиц (префикс).
пример:
bigTable имеет 100 строк и находится в библиотеке LIBRA.Хотите разделить его на 4 таблицы, каждая из которых имеет 33 строки.
%partitionner(Library=LIBRA, Table=bigTable, nb_part=4, nblig=33, tabIntr=smalTable);
Результат:
- smallTable1 имеет 33 наблюдения.
- smallTable2 имеет 33наблюдения.
- smallTable3 имеет 33 наблюдения.
- smallTable4 имеет 1 наблюдения.