全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1678 5
2014-11-06

问题是这样:


The dataset below contains enrollment records for students. Write code to count the numberof days each student was enrolled. Include both the start date and the end datein the count. Beware of overlapping date ranges. As an example student 1’s count should be 6.



data Enrollment;

      informatStart_Date MMDDYY10.End_Date MMDDYY10.;

      formatStart_Date MMDDYY10.End_Date MMDDYY10.;

      infiledatalines dlm=',';

      inputStudent_Id Start_Date End_Date;

      datalines;

      1,8/20/2012,8/23/2012

      1,8/21/2012,8/25/2012

      2,8/20/2012,8/22/2012

      2,8/24/2012,8/25/2012

      3,8/20/2012,8/23/2012

      4,8/22/2012,8/23/2012

      3,8/22/2012,8/23/2012

      4,8/23/2012,8/24/2012

      3,8/24/2012,8/24/2012

run;


因为时间段有overlap,所以不知道如何进行计算?向各位大牛请教一下!


二维码

扫码加我 拉你入群

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

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

全部回复
2014-11-6 11:25:38
二维码

扫码加我 拉你入群

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

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

2014-11-6 11:33:26
proc sort data=enrollment out=test;
by student_id start_date end_date;
run;

data wanted;
set test;
by student_id start_date end_date;
dur=end_date-start_date+1;
lagend=lag(end_date);
format lagend mmddyy10.;
if student_id ne lag(student_id) then call missing(lagend);
if ^missing(lagend) and lagend>=start_date-1 then dur=end_date-lagend;
if first.student_id then enrolled_days=dur;
else enrolled_days+dur;
if last.student_id;
keep student_id enrolled_days;
run;
二维码

扫码加我 拉你入群

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

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

2014-11-6 12:09:41
wwang111 发表于 2014-11-6 11:33
proc sort data=enrollment out=test;
by student_id start_date end_date;
run;
好迅速!膜拜一下,能否简单解释一下原理?尤其是从“if^missing(lagend)”开始不太明白是怎么回事了,谢谢!
二维码

扫码加我 拉你入群

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

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

2014-11-6 12:59:01
这一步就是判断一下在同一个ID之内,本条记录的end date与下一条记录的start date是否重叠,如果重叠就减去重叠的天数, 后面的first. 开始就是把每个id每条记录的天数相加
二维码

扫码加我 拉你入群

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

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

2014-11-6 22:24:43
wwang111 发表于 2014-11-6 12:59
这一步就是判断一下在同一个ID之内,本条记录的end date与下一条记录的start date是否重叠,如果重叠就减去 ...
好的多谢多谢!!!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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