如何操作此数据集以提供新列?

时间:2016-11-14 15:25:28

标签: sas

我有一个看起来像

的数据集
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

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;

example result