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

有一个数据集如下所示:

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

如果直接进行转置。

SAS程序:

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

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

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

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

SAS程序:

【笔记】使用PROC TRANSPOSE过程步对数据集进行转置时如何保持日期变量的时间顺序
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;
【笔记】使用PROC TRANSPOSE过程步对数据集进行转置时如何保持日期变量的时间顺序

最终结果:

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

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

上一篇:ps简单制作非常漂亮的背景海报


下一篇:2013116-基础练习