今天要介紹另一支「歸戶」程式,主要的指令是SORT與NODUPKEY。昨天的主要語法是first.var=1,透過1與0指定擷取的資料為第一筆或非第一筆。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排序,再執行SORT與NODUPKEY的指令,就能找到真正的第一筆了。
然而,想擷取資料庫中的最後一筆,該如何執行呢?
[程式三];
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;
- Jan 21 Tue 2014 19:37
健保資料庫的歸戶(人次轉人數)(二)
文章標籤
全站熱搜
留言列表