本文鏈接: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 input(put(arm, $arm.), best.), input(put(sex, $sex.), best.); quit;