在SAS中,我拥有的数据集如下。
id A
1 2
1 3
2 1
3 1
3 2
ID给每个人,A是一个分类变量,取1,2或3.我想得到数据,每个人用一个观察将A分成三个指标变量,比如A1,A2和A3。
结果如下:
id A1 A2 A3
1 0 1 1
2 1 0 0
3 1 1 0
有没有人想过如何在数据步骤中执行此操作,而不是在sql中?提前谢谢。
答案 0 :(得分:1)
所以你在正确的轨道上,一个转置声明绝对是要走的路:
data temp;
input id A;
datalines;
1 2
1 3
2 1
3 1
3 2
;
run;
首先,您希望使用变量A:
按id进行转置proc transpose data = temp
out = temp2
prefix = A;
by id;
var A;
id A;
run;
然后,对于以A开头的所有变量,您希望将所有缺失值替换为0,将所有非缺失值替换为1。这里的retain语句重新排序你的变量:
data temp3 (drop = _name_);
retain id A1 A2 A3;
set temp2;
array change A:;
do over change;
if change~=. then change=1;
if change=. then change=0;
end;
run;