今天要介紹另一支「歸戶」程式,主要的指令是SORTNODUPKEY。昨天的主要語法是first.var=1,透過10指定擷取的資料為第一筆或非第一筆NODUPKEY指令則在刪除重覆的資料,言下之意是只取第一筆,如何定義第一筆呢?

[程式三] 首先要以SORT指令將id,birthday排序,如此一來,就可以一目瞭然地看到哪幾筆資料是同一人的,藉此就可以定義排在最前面的id, birthday是第一筆,之後為重覆,加了NODUPKEY後,重覆的筆數就被刪除。被排序的資料檔為aa ,指令為data=aa;輸出的結果為bb ,指令為out=bb,是不是比FIRST.VAR=1的指令簡單呢?


[程式四] 若大家還記得昨天的資料,A01患者的就醫日期還沒排序呢,因此排序時要多加in_date,但是...支程式執行的結果會是什麼呢?就是...id, birthday取完每一個人的第一筆之後,再考慮一個人有好幾筆不同的就醫日期,每筆就醫日期都不重覆,於是所有的就醫日期都納入了,最後,等於沒有歸戶,因為所有的資料又全被擷取回來,該怎麼辦呢?方法很簡單的,不用耽心。

[程式五] 為先單獨將id, birthday, in_date排序,再執行SORTNODUPKEY的指令,就能找到真正的第一筆了。

然而,想擷取資料庫中的最後一筆,該如何執行呢?

[程式三];
proc sort data=aa out=bb nodupkey;
by id birthday ;
proc print;
run;

[程式四];
proc sort data=aa out=bb nodupkey;
by id birthday in_date ;
proc print;
run;

[程式五];
proc sort data=aa;
by id birthday in_date; 
proc sort data=aa out=bb nodupkey;
by id birthday ;
proc print;
run;

arrow
arrow
    文章標籤
    SAS NODUPKEY 歸戶
    全站熱搜
    創作者介紹
    創作者 estat 的頭像
    estat

    以斯帖統計顧問公司

    estat 發表在 痞客邦 留言(1) 人氣()