作者gogostay (Go)
看板Statistics
标题Re: [程式]SAS不同群组的时间相减
时间Tue Oct 21 22:49:40 2014
仅供参考...
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://webptt.com/cn.aspx?n=bbs/Statistics/M.1413902982.A.F80.html