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;
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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.