这是我的输入:
ID Color 1 green 1 red 1 orange 1 green 1 red 2 red 2 red 2 blue 3 green 3 red
这是我在输出中想要的内容 - 每种颜色的ID记录数:
ID green red orange blue 1 2 2 1 0 2 0 2 0 1 3 1 1 0 0
我知道我可以使用proc freq获取信息,但我想输出一个与我上面写的完全相同的数据集.我似乎无法弄清楚如何使颜色成为此输出数据集中的列.
首先,生成数据.
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;
Run Code Online (Sandbox Code Playgroud)
接下来,按ID汇总颜色计数.
proc freq data=data noprint;
table id*color / out=freq;
run;
Run Code Online (Sandbox Code Playgroud)
使桌子平坦.
proc transpose data=freq out=freq_trans(drop=_:);
id color;
by id;
var count;
run;
Run Code Online (Sandbox Code Playgroud)
可选地,用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;
Run Code Online (Sandbox Code Playgroud)