Hi @Kashvig
According to your post, you want for each unique center ID how many and which organs are transplanted. Your output example doesn't include counts, but here is an expanded version of the code provided by @novinosrin ,that includes counts for each organ and total.
data have;
input (CenterID Organ ) ($);
cards;
1 Heart
1 Lung
1 Kidney
1 Heart
2 Heart
3 Heart
3 Liver
4 Heart
4 Lung
5 Liver
6 Lung
7 Heart
7 Lung
7 Lung
7 Liver
7 Kidney
;
proc sql;
create table w as
select distinct CenterID, Organ, count(*) as Cnt
from have
group by CenterID, Organ
order by CenterID, Organ;
quit;
data want;
drop Cnt Tot organ;
do until(last.centerid);
set w;
length want $100;
by centerid;
if first.centerid then Tot = 0;
want=catx(' + ',want,trim(organ)||':'||strip(put(Cnt,8.)));
Tot = Tot + Cnt;
end;
want=catx(' - ',want,'Total:'||strip(put(Tot,8.)));
run;
... View more