使用PROC TRANSPOSE过程步对数据集进行转置时如何保持日期变量的时间顺序

有一个数据集如下所示:

如果直接进行转置。

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;

最终结果:

原文地址:https://www.cnblogs.com/liyongzhao/p/3527555.html