如何转置此数据集?

时间:2019-04-17 21:49:07

标签: sas transpose

我想转置数据集的一列,并对每个人和每个日期都有一个独特的观察结果。

我当前的数据如下:

   Person      |  Date    |   Brand 
    John       |  2003    |   Apple
    John       |  2003    |   Dell
  Victoria     |  2005    |   Apple
    Ted        |  2006    |   Samsung
    Ted        |  2006    |     LG 

我想转换此数据集,以便每个人和日期都有唯一的值

    Person    |   Date  |      Brand 1  |     Brand2 
     John     |   2003  |       Apple   |     Dell
     Victoria |   2005  |       Apple   |
     Ted      |   2006  |       Samsung |       LG

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以创建一个附加列并基于该列进行转置:

data have;
input Person$ Date Brand$;
datalines; 
John 2003 Apple
John 2003 Dell
Victoria 2005 Apple
Ted 2006 Samsung
Ted 2006 LG
;
run;

proc sort data=have; by Person; run;

data have1;
set have;
 by Person;
 retain num 0;
 if first.person then num=1;
 else num=num+1;

 numc=put(num,8.);
 Brand_new=compress("Brand"||numc);
 drop num numc;
run;

proc sort data=have1; by Person Date; run;

proc transpose data=have1 out=want(drop=_NAME_);
by Person Date;
id brand_new;
var brand;
run;
相关问题