今天看了这么篇文章《LAG - the Very Powerful and Easily Misused SAS® Function》——
Yunchao (Susan) Tian, Social & Scientific Systems, Inc., Silver Spring, MD
该文中详细介绍解读了LAG函数的运用并附有很不错的例子予以说明。这里以鄙人弱弱的英语和sas理解能力,再次复述一下几个例子。
例一,已知数据是2001-2005年间二手房的中介价格,要求计算每年增加的价格:
data example1;
input year $ price;
length price;
cards;
2001 200000
2002 220000
2003 250000
2004 280000
2005 310000
;
run;
data example1_right;
set example1;
lag_price=lag(price);
dif_price=price-lag_lag_price;
per_increase=(dif_price-lag_price)*100;
/*per_increase=(dif(price)/lag(price))*100*/
run;
例二、依据前一年的价格对以后年度(缺失)的价格予以处理。这个例子中,缺失的值比前一年增加10%,比两年前则增加20%。
data example3;
input county 1-4 year $ 6-9 price;
cards;
1001 2001 200000
1001 2002 .
1001 2003 .
1001 2004 280000
1001 2005 310000
1002 2001 .
1002 2002 240000
1002 2003 270000
1002 2004 300000
1002 2005 340000
1003 2001 280000
1003 2002 300000
1003 2003 330000
1003 2004 370000
1003 2005 .
;
run;
data example3_right;
set example3;
lag_price=lag(price);
lag2_price=lag2(price);
lag_county=lag(county);
lag2_county=lag2(county);
if price ne . then price_impute=price;
else if price = . and county=lag_county and lag_price ne .
then price_impute=lag_price*1.1;
else if price = . and lag_price = . and county = lag2_county
and lag2_price ne . then price_impute = lag2_price*1.2;
run;
这里需要注意的是,使用lag函数时,要首先对变量使用lag函数,然后再进行其他有条件的运算。