SAS中文论坛

标题: 请教一个循环计算的问题 [打印本页]

作者: shiyiming    时间: 2012-11-20 11:32
标题: 请教一个循环计算的问题
样本数据如下,日期是按照从大到小排列的,只有最近一个日期(09-07-20 )的net_profit是已知的,现在要根据每天的proft把net_profit那一列的数据补齐,计算的方法是:net_profit = lag(net_profit) + profit。
<!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->  <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D --> 谢谢~~  

data _temp;
input ID $ Date yymmdd8. profit net_profit;
format Date yymmdd10.;
cards;
001 09-07-20 -2.3  12.5
001 09-07-19 0.2 .
001 09-07-18 1.3 .
001 09-07-17 4.7 .
001 09-07-16 -1.2 .
;
作者: shiyiming    时间: 2012-11-20 13:54
标题: Re: 请教一个循环计算的问题
[code:3tkfys4c]data _temp(index=(id date));
    input ID $ Date yymmdd8&#46; profit net_profit;
    format Date yymmdd10&#46;;
cards;
001 09-07-20 -2&#46;3 12&#46;5
001 09-07-19 0&#46;2 &#46;
001 09-07-18 1&#46;3 &#46;
001 09-07-17 4&#46;7 &#46;
001 09-07-16 -1&#46;2 &#46;
;
data _out(drop=lag_net_profit);
    do until(last&#46;id);
        set _temp;
        by id descending date;
        if not first&#46;id then net_profit=sum(lag_net_profit,profit);
        output;
        lag_net_profit=net_profit;
    end;
run;[/code:3tkfys4c]
作者: shiyiming    时间: 2012-11-20 14:53
标题: Re: 请教一个循环计算的问题
SAS真是博大精深啊,虽然之前也知道要用do until来写,倒弄了一上午硬是没做出来,谢谢hopewell <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->

[quote=&quot;hopewell&quot;:xiacvupq][code:xiacvupq]data _temp(index=(id date));
    input ID $ Date yymmdd8&#46; profit net_profit;
    format Date yymmdd10&#46;;
cards;
001 09-07-20 -2&#46;3 12&#46;5
001 09-07-19 0&#46;2 &#46;
001 09-07-18 1&#46;3 &#46;
001 09-07-17 4&#46;7 &#46;
001 09-07-16 -1&#46;2 &#46;
;
data _out(drop=lag_net_profit);
    do until(last&#46;id);
        set _temp;
        by id descending date;
        if not first&#46;id then net_profit=sum(lag_net_profit,profit);
        output;
        lag_net_profit=net_profit;
    end;
run;[/code:xiacvupq][/quote:xiacvupq]




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2