Вам действительно нужно сделать это в шаге данных? Вы также можете использовать proc sql
для декартового произведения.
proc sql;
create table want as
select code, groupds
from (select distinct code from have) a,
(select distinct groupds from have) b;
quit;
Вот как вы можете сделать это на шаге данных.
data want;
set have(keep=code where=(not missing(code)));
do i=1 to n;
set have(keep=groupds where=(not missing(groupds))) point=i nobs=n;
output;
end;
run;
Проблема с этим методом заключается в том, что у вас есть дубликат code
или groupds
для этой записи будет создана запись.