全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1310 1
2015-03-06
我有一组数据,
data test;
input id $ date mmddyy10.;
format date mmddyy10.;
cards;
1 1/1/2010
1 1/2/2010
1 1/5/2010
1 1/11/2010
1 1/22/2010
1 2/23/2010
1 2/25/2010
2 3/3/2010
2 3/19/2010
2 3/25/2010
;



现在我想要把每个id中从第一个日期算起,间隔小于10的日期都要标记出来,比如说第一个id 1的第一个日期是2010年1月1号,所以后面的1月2号,1月5号都要标记出来,比如说flag成1,1月11号间隔超过10天(大于等于10),22号也可以,2月23号也可以,2月25号就要标记出来。对于id 2来说,只有3月25号需要标记出来,因为他间隔前面的3月19号小于10。

我觉得困扰我的是,每个数据并不是直接跟上一个数据比较,而是跟上一个没有被标记出来的数据比较,所以想恳请大家帮忙,能不能指点一二。十分感谢
二维码

扫码加我 拉你入群

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

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

全部回复
2015-3-6 14:32:41
我自己来抛砖引玉一把,看看有没有同学给我更好的方法。

data test;
input id $ date mmddyy10.;
format date mmddyy10.;
cards;
1 1/1/2010
1 1/2/2010
1 1/5/2010
1 1/11/2010
1 1/22/2010
1 1/27/2010
1 2/4/2010
1 2/23/2010
1 2/25/2010
2 3/3/2010
2 3/19/2010
2 3/25/2010
2 3/26/2010
2 3/27/2010
;
data want;
set test;
by id date;
format date1 date2 mmddyy10.;
retain date1 date2;
if first.id then do;
counter=0;
date1=.;
end;
if 0< date-date1<10 then flag=1;
else do;
date1=date;
date2=lag(date);
end;
run;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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