lag函数

今天看了这么篇文章《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函数,然后再进行其他有条件的运算。

你可能感兴趣的:(spring,function,input,Social)