本文連結: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;