逆水行舟,不进则退

纸上得来终觉浅,绝知此事要躬行
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

有一个数据集如下所示:

如果直接进行转置。

SAS程序:

proc transpose data=test out=outx1 (drop=_name_);                 
    by id;                                                         
    var amount;                                                    
    id sasdate;                                                    
    idlabel sasdate;                                               
run; 

则转置的数据集如下所示:

但先通过PROC SQL过程步得到一个关于时间顺序的宏变量,然后在数据步中利用RETAIN则可以解决时间变量未按顺序排列的问题。

SAS程序:

proc sort data=test;                                              
    by id sasdate;                                                 
run;                                                              
proc sql noprint; select distinct cats(
'_',put(sasdate,date9.)) into :alldates separated by ' ' from test order by sasdate; quit; %put &alldates; data outx1; retain id &alldates; set outx1; run;

最终结果: