Я пытаюсь запустить этот код
data swati;
input facility_id$ loan_desc : $50. sys_name :$50.;
cards;
fac_001 term_loan RM_platform
fac_001 business_loan IQ_platform
fac_002 business_loan BUSES_termloan
fac_002 business_loan RM_platform
fac_003 overdrafts RM_platform
fac_003 RCF IQ_platform
fac_003 term_loan BUSES_termloan
;
proc contents data=swati out=contents(keep=name varnum);
run;
proc sort data=contents;
by varnum;
run;
data contents;
set contents ;
where varnum in (2,3);
run;
data contents;
set contents;
summary=catx('_',name, 'summ');
run;
data _null_;
set contents;
call symput ("name" || put(_n_ , 10. -L), name);
call symput ("summ" || put (_n_ , 10. -L), summary);
run;
options mlogic symbolgen mprint;
%macro swati;
%do i = 1 %to 2;
proc sort data=swati;
by facility_id &&name&i.;
run;
data swati1;
set swati;
by facility_id &&name&i.;
length &&summ&i. $50.;
retain &&summ&i.;
if first.facility_id then do;
&&summ&i.="";
end;
if first.&&name&i. = last.&&name&i. then &&summ&i.=catx(',',&&name&i., &&summ&i.);
else if first.&&name&i. ne last.&&name&i. then &&summ&i.=&&name&i.;
run;
if last.facility_id ;
%end;
%mend;
%swati;
Этот код создаст две новые переменные loan_desc_summ и sys_name_summ, которые содержат значения всех кредитов_desc в одной строке и sys_names в одной строке, разделенных запятой, пример (term_loan, business_loan) , (RM_platform, IQ_platform) Но если у клиента есть только один кредит_desc, кредит_сумм должен иметь свое значение только дважды.
Проблема при выполнении цикла do заключается в том, что после запуска этого кода я получаю набор данных только с sys_name_summ, а не с кредитом_desc_summ. Мне нужен набор данных со всеми пятью переменными facility_id, кредит_деск, sys_name, кредит_desc_summ, sys_name_summ.
Не могли бы вы помочь мне выяснить, есть ли проблема в цикле do??