zjtj12 发表于 2016-8-5 19:51 
在你的程序上略微改动如下:
理想的结果出来了,谢谢~
我刚改动了下:data sample;
data new_sample4;
set sample;
by id;
if first.id then new_income=0;
new_income=sum(new_income,income);
if last.id ;
run; ,
结果是:id=1或2时 new_income 结果均为100,
data new_sample5;
set sample;
by id;
retain new_income;
if first.id then new_income=0;
new_income=sum(new_income,income);
if last.id ;
run;
结果是:id=1时 new_income=600
id=2时 new_incom=400;
想请问retain到底是在那一步开始执行的,我认为个观测都执行,但是为什么好像只有在id=1 所有的观测读完之后再执行一遍?好晕那,老师帮我解释一下吧,谢谢~