Re: [程式] SAS不同群組的時間相減
僅供參考...
data a1;
input v1 $ v2 v3 time6. v4 time6.;
cards;
A 2 12:00 13:00
A 1 13:01 14:00
A 3 14:20 15:30
B 1 12:00 12:30
B 2 13:00 12:02
;
run;
proc sort data=a1;
by v1 v2;
run;
data a2;
set a1;
by v1;
if first.v1 then output;
if last.v1 then output;
run;
data a3;
set a2;
d=v4-lag(v3);
run;
proc sort data=a3;
by v1 v2;
run;
data a4;
set a3;
by v1;
if last.v1 then output;
run;
proc print data=a4;
run;
※ 引述《MOONY135 (談無慾)》之銘言:
: ※ 引述《MOONY135 (談無慾)》之銘言:
: : ------------------------------------------------------------------------
: : [軟體程式類別]:
: : 請填入軟體程式類別,例如:SAS、SPSS、R、EVIEWS...等
: : SAS
: : [程式問題]:
: : 資料處理、迴歸、敘述統計、logistic、probit...等
: : 資料處理
: : [軟體熟悉度]:
: : 中(3個月到1年
: : [問題敘述]:
: : 我有一筆資料如下
: : 希望作出不同MONBR的最後一筆OTU_TIME-第一筆的IN_TIME 並存到另外一個欄位
: : 例如 MONBR A 是
: : 27Jun2014 14:57:53-23Jun2014 14:57:50
: : MONBR B 是
: : 25Jun2014 14:47:18-23Jun2014 14:47:12
: : MONBR 班別 IN_TIME OUT_TIME
: : A 1 23Jun2014 14:57:50 23Jun2014 14:57:50
: : A 2 23Jun2014 14:57:51 23Jun2014 14:57:51
: : A 3 23Jun2014 14:57:52 23Jun2014 14:57:52
: : A 4 23Jun2014 14:57:53 27Jun2014 14:57:53
: : B 1 23Jun2014 14:47:12 23Jun2014 14:47:12
: : B 2 23Jun2014 14:47:15 23Jun2014 14:47:15
: : B 3 23Jun2014 14:47:18 25Jun2014 14:47:18
: : [程式範例]:
: 我改成這樣 應該是可以了 請大家幫我看看有沒有邏輯上的問題
: data step1;
: set 資料;
: by MONBR;
: if first.MONBR then OUTPUT;
: if last.MONBR then OUTPUT;
: /*這樣會取出同MONBR的第一個班別跟最後一個班別*/
: run;
: data STEP2;
: set STEP1;
: by MONBR;
: 準備用來減的時間=ifn( first.MONBR , (.),lag(IN_TIME));
: MONBR_TOTAL_TIME=IN_TIME-準備用來減的時間;
: /*如果是同MONBR的第一個班別 就將IN_TIME那欄填上遺漏值
: 然後把該IN_TIME往下一格 這樣就可以拿來相減*/
: run;
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.5.174
※ 文章網址: http://www.ptt.cc/bbs/Statistics/M.1413902982.A.F80.html
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):