全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1184 2
2021-01-06
新手请教,sas中如果想要算一个一组数的求和,怎么打代码呢?比如date6这一行,sum的值要的是date 1-5中r的求和,date7里面要的是date2-6的求和,而且要区分stock的话,应该怎么处理?
QQ图片20140125171105.png

二维码

扫码加我 拉你入群

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

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

全部回复
2021-1-7 22:33:45
我感觉写的比较繁琐,应该有简单的方法吧。

data have;
        date=10;stock=1;r=0.11;output ;
        date=1;stock=1;r=0.11;output ;
        date=2;stock=1;r=0.22;output ;
        date=3;stock=1;r=0.33;output ;
        date=4;stock=1;r=0.44;output ;
        date=5;stock=1;r=0.55;output ;
        date=6;stock=1;r=0.66;output ;
        date=7;stock=1;r=0.77;output ;
        date=8;stock=1;r=0.88;output ;
        date=9;stock=1;r=0.99;output ;

        date=1;stock=2;r=0.11;output ;
        date=2;stock=2;r=0.22;output ;
        date=3;stock=2;r=0.33;output ;
        date=4;stock=2;r=0.44;output ;
        date=5;stock=2;r=0.55;output ;
        date=6;stock=2;r=0.66;output ;
        date=7;stock=2;r=0.11;output ;
        date=8;stock=2;r=0.11;output ;
        date=9;stock=2;r=0.11;output ;
        date=10;stock=2;r=0.11;output ;
run;

proc sort data=work.have;by stock date;run;
data want;
        retain begin_stock;
        set have;
        by stock date;
        if first.stock then begin_stock=_n_;
        nobs+1;
        begins = max(nobs - 6,begin_stock);
        ends = _n_ - 1;
        r_new =.;
        do i=begins to ends;
                set have(keep=r rename=(r=rr)) point=i;
                r_new+rr;
        end;

        drop nobs begins ends rr;
run;
附件列表
人大2.png

原图尺寸 115.63 KB

人大2.png

二维码

扫码加我 拉你入群

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

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

2021-1-13 08:45:00
我采用LAGn()函数及纵向相加功能实现。

程序Code如下

复制代码


2021-01-13_8-46-28.png


二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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