| 
 | 
沙发
 
 
 楼主 |
发表于 2012-1-9 04:53:21
|
只看该作者
 
 
 
Re: 如何计算时间点未来一段时间的记录数量?
1.是对同person吗? 
2.'计算每条记录之后30天内测量记录的数量(最近30天的除外)' -- 感觉好矛盾,到底是哪些天,第30-第60天? 
-----姑且以同person在30-60天内为计,提供以下的code. 
3.什么叫'连续三次out均为1'? 连续3天(以person,date为序?有gap算不算?)? or连续3条记录(有没有任何顺序?),是不是对同person? 实在无法理解. 
针对你想要的结果,你能不能给个例子来说明一下? 
 
[code:2nztxnsq]data a; 
 input p $ out $ date yymmdd9.; 
 d30=intnx('day',date,30); 
 d60=intnx('day',date,60); 
  format date d30 d60 date9.; 
  pk=_n_; 
 cards; 
001 1 2006-5-25 
001 0 2006-5-26 
001 0 2006-5-27 
001 1 2006-5-28 
001 0 2006-5-29 
001 0 2006-6-7 
001 1 2006-6-8 
001 1 2006-6-9 
001 1 2006-7-8 
001 1 2006-7-9 
001 1 2006-7-25 
001 0 2006-7-26 
001 1 2006-7-27 
001 1 2006-7-28 
001 0 2006-7-29 
001 0 2006-9-7 
001 1 2006-9-8 
001 0 2006-9-9 
001 1 2006-11-8 
001 1 2006-11-9 
001 1 2006-11-8 
001 0 2006-11-9 
002 1 2006-5-25 
002 0 2006-5-26 
002 0 2006-6-1 
002 1 2006-5-28 
002 0 2006-5-5 
002 0 2006-6-7 
002 1 2006-6-8 
002 1 2006-6-9 
002 1 2006-7-8 
002 1 2006-7-9 
002 1 2006-7-25 
002 0 2006-7-26 
002 1 2006-4-27 
002 1 2006-7-28 
002 0 2006-7-29 
002 0 2006-9-7 
002 1 2006-6-8 
002 0 2006-9-9 
002 1 2006-11-8 
002 1 2006-8-9 
002 1 2006-7-11 
002 0 2006-11-9 
003 0 2007-5-25 
003 0 2007-5-26 
003 0 2007-6-1 
003 1 2007-5-28 
003 1 2007-5-5 
003 0 2007-6-7 
003 1 2007-6-8 
003 1 2007-6-9 
003 1 2007-7-8 
003 0 2007-7-9 
003 1 2007-7-25 
003 0 2007-7-26 
003 0 2007-4-27 
003 1 2007-7-28 
003 0 2007-7-29 
003 0 2007-9-7 
003 1 2007-6-8 
003 0 2007-9-9 
003 1 2007-11-8 
003 0 2007-8-9 
003 1 2007-7-11 
003 1 2007-11-9 
; 
run; 
proc sql; 
create table b(keep=p out date cnt) as 
   select distinct d2.*, count(d1.pk) as cnt 
     from a d1 right join a d2 
   on d1.p=d2.p and d2.d30<d1.date<=d2.d60 
    group by d2.pk 
   order by d2.p,d2.date,d2.pk; 
quit;[/code:2nztxnsq] |   
 
 
 
 |