作者imaltar (..)
看板Statistics
標題Re: [程式] SAS 時間區間分組問題
時間Fri Oct 21 20:16:17 2016
※ 引述《elvics ()》之銘言:
: [程式] SAS
: [軟體程式類別]: SAS
:
: [程式問題]:
: 資料處理
: [軟體熟悉度]:
: 新手逐漸熟悉中
: [問題敘述]:
: 想要將同一ID的人,將其開藥時間區間,進行編組。
: 兩次開藥時間,則是將此次開始起使日,減上次開藥結束日;
: 如<=120天,視為同一組;>120天者,則是給予新的編號。
: 希望能夠呈現如Group此變項分組。
: 資料如下:
: ID 開藥起始日 開藥結束日 該次開藥天數 兩次開藥時間差距) Group
: (Drug_start) (Drug_end) (Drug_day) (Dif_Days)
: AAA 20080605 20080618 14 1 1
: AAA 20100311 20100317 7 631 2
: AAA 20100318 20100331 14 1 2
: AAA 20110616 20110713 28 442 3
: AAA 20111124 20111221 28 134 4
: AAA 20121115 20121212 28 330 5
: AAA 20121207 20130103 28 -5 5
: AAA 20130110 20130206 28 7 5
: AAA 20130418 20130515 28 71 5
: AAA 20130530 20130626 28 15 5
: AAA 20130706 20130802 28 10 5
: AAA 20130727 20130823 28 -6 5
: [程式範例]:
:
: DATA Final;
: SET data;
: by ID Drug_start
: if first.ID then group=1;
: if Dif_Days<=120 then group=1;
: else group+1;
: run;
:
: 這個程式,一直無法順利分組如grpup所示,請各位提供指點。
data a;
input ID $ Dif_Days;
cards;
AAA 1
AAA 631
AAA 1
AAA 442
AAA 134
AAA 330
AAA -5
AAA 7
AAA 71
AAA 15
AAA 10
AAA -6
BBB 130
BBB 2
BBB 1
BBB 150
BBB 160
BBB 7
BBB 5
BBB -3
BBB 169
BBB 200
BBB 3
;
run;
data b;set a;by id;
retain Group;
if first.id then do;
if Dif_Days>120 then do;
Group=0;
end;
else do;
Group=1;
end;
end;
if Dif_Days>120 then do;Group=Group+1;end;
run;
參考看看~~~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.225.109.218
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Statistics/M.1477052180.A.D4B.html