data three;
set one;
by area type year;
retain lastcost;
if first.type then do;lastcost=cost;pct=0;end;
else do;pct=(cost-lastcost)/lastcost;lastcost=cost;end;
drop lastcost;
run;作者: shiyiming 时间: 2010-8-31 16:05 标题: Re: 继续求助,关于同一数据集中求同比问题 能不能解释一下上边语句的含义呢,就是if 后面的,有点不大明白。我的意思就是比如北京2006年生产方式2下的的同比就是2005年生产方式2下的美元与2006年生产方式2下的美元比较,但是要用语句去判断地点相同,年份加上1,生产方式相同,就是这个判断不会作者: shiyiming 时间: 2010-8-31 16:21 标题: Re: 继续求助,关于同一数据集中求同比问题 data one;
input area $ year type cost;
cards;
bj 2006 1 5000
bj 2006 2 3456
bj 2006 3 1234
bj 2006 4 2122
bj 2007 1 4445
bj 2007 3 4445
bj 2007 6 4445
bj 2007 7 4445
;
run;
proc sort;by area type year;run;
data three;
set one;
by area type year;
retain lastcost;
if first.type then do;lastcost=cost;pct=0;end;/**同一个地区,一个生产方式如果第一次开始使用,增长率设为0 **/
else do;pct=(cost-lastcost)/lastcost;lastcost=cost;end;/**同一个地区,一个生产方式如果之前使用过,增长率=(该年的美元值-上一年的美元值)/上一年的美元值 **/
drop lastcost;
run;作者: shiyiming 时间: 2010-8-31 16:29 标题: Re: 继续求助,关于同一数据集中求同比问题 我试一下,谢谢了