全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1085 2
2012-09-02
询问:在每种代码里,CEO名字是否连续4年重复出现,如果是则为1,不是则为0
         SAS怎么实现?
   注意:时间间隔在文件里有很多是不同的。
  求高手帮助。
sas.JPG
二维码

扫码加我 拉你入群

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

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

全部回复
2012-9-4 12:28:01
data list1;
    set raw;
    year=input(scan(date,1,'-'), best.); /*提取日期中的年,转化为数值型*/
run;

proc sort data=list1;
    by id name year;    /*按照代码,人名,年 排序*/
run;

data list2;
    set list2;
    by id name year;

    diff_year=dif(year);  /*计算上下两个年份的差,判断两个年份是否是连续的*/

    if diff_year^=1 or first.name then flg+1;   /*如果差不等于1,表示这一年与上一年不是连续,需要重新标记。每个人开始的时候也重新标记。*/
    retain flg;
run;

proc sql;
    create table final as
      select distinct id,date,name
                     ,count(flg) as count   /*根据标记的个数,判断连续了几年*/
                     ,min(date) as min      /*连续的开始日期*/
                     ,max(date) as max      /*连续的结束日期*/
        from list2
        group by id,name,flg
    ;
quit;

二维码

扫码加我 拉你入群

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

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

2012-9-4 17:33:32
非常感谢,很清晰
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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