|
沙发

楼主 |
发表于 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] |
|