全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1874 2
2012-09-07
libname ch7 'D:\data_model\SAS data\Book_data\chapt7';
proc sort data=ch7.smooth;by cid month;run;

data smooth;
        set ch7.smooth;
        by cid;
        array lags(12);
        lags(1)=lag(balance);
        do i=2 to 12;
    lags(i)=lag(lags(i-1));
    end;
        do j=12 to 2 by -1;
        if j gt cns then lags(j)=.;
                put j=;
        end;
        if first.cid then do
       cns=0;
       do i=1 to 12;lags(i)=.;
       end;
    end;
        cns+1;
mean6=mean(of lags1-lags6);
mean12=mean(of lags1 - lags12);
/*drop i j;*/
run;
附件列表

smooth.xls

大小:11 KB

 马上下载

用到的数据

二维码

扫码加我 拉你入群

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

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

全部回复
2012-9-7 17:31:30
看了好多遍,还是没有研究透,郁闷中。希望哪位大侠给解读下,小弟不胜感激。
二维码

扫码加我 拉你入群

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

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

2012-9-8 21:32:28
libname ch7 'D:\data_model\SAS data\Book_data\chapt7';
proc sort data=ch7.smooth;by cid month;run;

data smooth;  (建立临时数据集)
        set ch7.smooth; (取ch7.smooth的数据)
        by cid; (按cid排序)
        array lags(12); (定义数组变量)
        lags(1)=lag(balance); (对数组的第一个变量赋值)
        do i=2 to 12; (do循环)
    lags(i)=lag(lags(i-1)); (给所有数组变量赋值)
    end;
        do j=12 to 2 by -1; (从大到小循环)
        if j gt cns then lags(j)=.; (条件语句,如果J大于cns  第J个数组变量赋值为缺失)(例如第3个cid=3,所有lags(4)到lags(12)都赋值为空)
                put j=; (j值清空)
        end;
        if first.cid then do
             cns=0;  
              do i=1 to 12;lags(i)=.;  所有第一次出现的cid值,cns赋值为0 lags数组变量赋值为空
              end;
         end;
        cns+1;
mean6=mean(of lags1-lags6);
mean12=mean(of lags1 - lags12);
/*drop i j;*/
run;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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