Hi,
Hope that someone will help.
I've a dataset
N_CRE | RISK |
---|---|
5031500EUR | ART127-b |
5031500EUR | ART127-c |
00002063356EUR | ART127-b |
00002063356EUR | ART127-d |
N_CRE | RISK |
---|---|
5031500EUR | ART127-b;ART127-c |
00002063356EUR | ART127-b;ART127-d |
data have;
length N_CRE RISK $20;
input N_CRE$ RISK$;
datalines;
5031500EUR ART127-b
5031500EUR ART127-c
00002063356EUR ART127-b
00002063356EUR ART127-d
;
proc sort data=have;
by N_CRE;
run;
data want(keep=n_cre temp rename=(temp=RISK));
set have;
length temp $200;
by N_CRE;
if first.N_CRE then temp=RISK;
else temp = cats(temp,';', RISK);
if last.N_CRE;
retain temp;
run;
Post test data as a datastep using the code window (its the {i} above post), as such I am not typing it out so just a guess:
data want (drop=_risk); set have (rename=(risk=_risk)); length risk $2000; retain risk; by n_cre; if first.n_cre then risk=_risk; else risk=catx(',',risk,_risk); if last.n_cre then output; run;
data have;
length N_CRE RISK $20;
input N_CRE$ RISK$;
datalines;
5031500EUR ART127-b
5031500EUR ART127-c
00002063356EUR ART127-b
00002063356EUR ART127-d
;
proc sort data=have;
by N_CRE;
run;
data want(keep=n_cre temp rename=(temp=RISK));
set have;
length temp $200;
by N_CRE;
if first.N_CRE then temp=RISK;
else temp = cats(temp,';', RISK);
if last.N_CRE;
retain temp;
run;
Thanks a lot.
What i've done is a:
proc sort data=have;
by N_Cre;
run;
proc transpose data=have out=classe_risk1 (drop = _NAME_);
by N_Cre;
var RISK;
run;
data classe_risk2;
set classe_risk1;
COL_FI = catx(';', of COL1-COL3);
run;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.