Need advise:
I have data as this:
Month | ID | Code | Count |
201806 | 30712566 | XB3 | 2 |
201806 | 30712566 | Z99 | 1 |
I need to have result as this:
Month | ID | Code | Count |
201806 | 30712566 | XB3,Z99 | 3 |
Please advise and help
Thank you
data have;
infile cards truncover;
input Month ID Code $ Count;
cards;
201806 30712566 XB3 2
201806 30712566 Z99 1
;
data want;
set have;
by month id;
length _code $10;
retain _code;
if first.id then do; _code=code;_count=count;end;
else do; _code=catx(',',_code,code);_count+count;end;
if last.id;
run;
data have;
infile cards truncover;
input Month ID Code $ Count;
cards;
201806 30712566 XB3 2
201806 30712566 Z99 1
;
data want;
set have;
by month id;
length _code $10;
retain _code;
if first.id then do; _code=code;_count=count;end;
else do; _code=catx(',',_code,code);_count+count;end;
if last.id;
run;
Make sure the length of the _CODE variable is long enough to hold the maximum number of codes you expect and include extra characters for the commas.
I agree
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
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.