сначала сгенерируйте данные.
data data;
format ID 8. Color $8.;
input id color;
datalines;
1 green
1 red
1 orange
1 green
1 red
2 red
2 red
2 blue
3 green
3 red
run;
далее, суммировать количество цветов по идентификатору.
proc freq data=data noprint;
table id*color / out=freq;
run;
сделать стол плоским.
proc transpose data=freq out=freq_trans(drop=_:);
id color;
by id;
var count;
run;
опционально, заполните недостающие ячейки 0.
data freq_trans_filled;
set freq_trans;
array c(*) green red orange blue;
do i = 1 to dim(c);
if c[i]=. then c[i]=0;
end;
drop i;
run;