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. 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 .
;
data _out(drop=lag_net_profit);
do until(last.id);
set _temp;
by id descending date;
if not first.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="hopewell":xiacvupq][code:xiacvupq]data _temp(index=(id date));
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 .
;
data _out(drop=lag_net_profit);
do until(last.id);
set _temp;
by id descending date;
if not first.id then net_profit=sum(lag_net_profit,profit);
output;
lag_net_profit=net_profit;
end;
run;[/code:xiacvupq][/quote:xiacvupq]