看板 Statistics 關於我們 聯絡資訊
※ 引述《wlsherica (Mon_tresor)》之銘言: : 前文恕刪,先謝謝原po的題目讓我有機會練習如何在SAS環境操作這樣的問題。 : 以下是我跑的SAS程式,參考t大與k大的說明,使用sort以及merge : 不曉得有沒有更精簡的寫法,請大家多多指教! : data a; : input id time event; : cards; : 1 2007 1 : 1 2008 0 : 1 2009 1 : 1 2010 1 : 2 2007 0 : 2 2008 1 : 2 2009 0 : 2 2010 1 : ; : run; : proc sort data=a; : by descending id descending time; : run; data a; set a;by id; retain Endtime ; if event=1 then endtime=lag(time); else endtime=.; if first.id then endtime=.; run; proc sort data=a;by id time; run; : data a1; : set a; : if event=0 then delete; : endtime=lag(time); : run; : proc sort data=a; : by id time; : run; : proc sort data=a1; : by id time; : run; : data final; : merge a a1; : by id time; : run; : proc sort data=final; : by id time; : run; : 不過遇到一個問題,就是第一個ID的最後一筆time會抓到下面的時間 : 我後來用last.id 去掉了~"~ : 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.44.204.168
wlsherica:(筆記) 謝謝!! 02/11 14:41
ASD332:幫補 retain 上面的 by descending id ; 02/11 16:07