我有一个看起来像
的数据集ID retailer
1 A
2 A
1 B
3 C
3 B
我想要的是一个数据集,每个不同的零售商都有一个列,表明该ID是否与零售商相关(类似于布尔值就可以了。)
我可以使用proc sql
手动执行此操作,但是当我有很多零售商时,这并不能很好地概括。
无论如何使用SAS创建数据透视表?我知道proc表格可以做类似的事情,但我需要输出进行进一步的计算。
Desired output:
ID A B C
1 1 1 0
2 1 0 0
3 0 1 1
答案 0 :(得分:1)
SAS无法真正实现数据透视表,但您可以使用转置程序将列交换为列 - 如下所示:
data have;
input ID $ retailer $ ;
retain count 1; /* NOTE - this bit is necessary to have in your source */
datalines;
1 A
2 A
1 B
3 C
3 B
;
run;
/* sort to enable transpose */
proc sort; by id;run;
/* transpose data */
proc transpose data=have out=want (drop=_name_);
by id;
id retailer;
run;
/* turn missings into zeros */
proc stdize data=want reponly missing=0;
run;