全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1688 4
2015-09-04
现在有一个标注时间间隔的问题,

IDDate
A1/1/2015
A1/3/2015
A1/11/2015
A1/14/2015
A1/15/2015
A1/31/2015
A2/1/2015
A2/2/2015
A3/1/2015


数据如上,理论上同一个ID在10天之内不能出现三次,一旦出现三次的话,这个三个数据都要被标注(比如加一个FLAG =1),而数据自动跳转到下一个待检验的数据。

所以,根据上面数据,
第一步检查第一条数据,A是1月1号,然后找到它的第三条记录是1月11号,已经在10天之外了,所以第一条不需要被标注(FLAG=0 或者空值)。

再看第二条记录,是1月3号,同样的它对应的第三条记录是1月14号,所以它也不需要被标注,

第三条记录是1月11号,它的第三条记录是1月15号,已经在10天之内,所以,1月11号,1月14号,1月15号同时被标注(FLAG=1),直接跳到下一条记录。

下一条记录是1月31号,同样道理,2/1,2/2也同时被标注

跳到下一条记录也就是3/1号,因为它只有一条,不满足10天之内三条记录(没有下面的了),所以也没有被标注,所以应该得到下面的结果

IDDateFlag
A1/1/2015.
A1/3/2015.
A1/11/2015

1

A1/14/2015

1

A1/15/2015

1

A1/31/2015

1

A2/1/2015

1

A2/2/2015

1

A3/1/2015.


不知道这样的情况,用SAS的怎么实现,觉得肯定使用LAG function,但是下一步就不知道怎么开始了,感谢大家的帮助啊

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-9-4 13:01:52
是这样吗?
data a;
infile 'C:\360Downloads\test5.csv' missover dsd firstobs=2;
input id $ date : mmddyy10.;
format date yymmdd10.;
run;
proc sort data=a out=b;
by id date;
run;

proc sql noprint;
create table union as
(
select
t1.*,
t2.date as new_date
from work.b t1
left join
work.b t2
on trim(t1.id) = trim(t2.id)
and t2.date < t1.date+10
and t2.date > t1.date)
order by t1.id,t1.date,t2.date;
quit;
run;

proc sql noprint;
create table final as
(select
id,
date
from work.union
group by id,date
having count(distinct new_date) >= 2);
quit;

proc sql noprint;
create table aa as
(select
t1.*,
t2.new_date
from work.final t1
left join
work.union t2
on trim(t1.id) = trim(t2.id)
and
t1.date=t2.date);
quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-9-4 19:20:04
忍冬的秋 发表于 2015-9-4 13:01
是这样吗?
data a;
infile 'C:\360Downloads\test5.csv' missover dsd firstobs=2;
关于日期型数据,sas认为是字符型的,如何才能进行比较运算呢。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-9-4 21:21:01
Try this
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-9-4 21:29:26
18129380375 发表于 2015-9-4 19:20
关于日期型数据,sas认为是字符型的,如何才能进行比较运算呢。
Change to num first:

input(date, mmddyy10.)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群