Re: [程式] SAS 時間區間分組問題

看板Statistics作者 (..)時間9年前 (2016/10/21 20:16), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《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://www.ptt.cc/bbs/Statistics/M.1477052180.A.D4B.html
文章代碼(AID): #1O2WSKrB (Statistics)
文章代碼(AID): #1O2WSKrB (Statistics)