本文链接:https://www.cnblogs.com/snoopy1866/p/15091967.html

实际项目中会经常遇到按指定顺序输出Listing的情况,例如:输出所有受试者的分组情况列表。

首先准备数据集:

data data1;
    input name $ arm $;
cards;
AXLD 试验组
GCHS 对照组
IJNK 对照组
OKLS 试验组
NJDK 试验组
PLDF 对照组
TGSJ 试验组
IDNG 对照组
;
run;

然后使用proc format过程创建一个自定义输出格式,这里创建了一个$arm.的输出格式,我们希望被分配到试验组的受试者应该排在对照组的前面。

proc format;
    value $arm
        "试验组" = 1
        "对照组" = 2;
run;

使用SQL过程选择数据集data1中所有观测,并使用order by语句对数据集data1按照变量arm在$arm.输出格式下的值进行排序。

proc sql noprint;
    create table data2 as
        select * from data1
            order by put(arm, $arm.);
quit;

输出结果如图:

 

 如果想对多个变量进行自定义排序,可创建多个对应的输出格式,并使用order by语句同时对多个变量在各自输出格式下的值进行排序即可。

例如:下述代码同时对性别和组别进行自定义排序。

data data1;
    input name $ sex $ arm $;
cards;
AXLD F 试验组
GCHS F 对照组
IJNK M 对照组
OKLS M 试验组
NJDK F 试验组
PLDF F 对照组
TGSJ M 试验组
IDNG M 对照组
;
run;

proc format;
    value $arm
        "试验组" = 1
        "对照组" = 2;
    value $sex
        "F" = 1
        "M" = 2;
run;

proc sql noprint;
    create table data2 as
        select * from data1
            order by put(arm, $arm.), put(sex, $sex.);
quit;

 

版权声明:本文为snoopy1866原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/snoopy1866/p/15091967.html