SAS 按自定義順序對觀測進行排序


本文鏈接: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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM