Hi,
Time series data (CPI, for example) are often indexed to a specific base year such that the value in that year is 1 (or 100) and the values in other years are expressed as ratios to the base year value. I would like to re-base (or re-index) my series to a new base year which simply involves dividing each value by the value in my desired base year. The difficulty is that for the early years, I need to know the value in that later, base year. Does anyone know if there's a simple way to do this (i.e. without getting in to macro programming)?
Thank you all!
Hello,
An other possible solution :
data want;
retain base;
if _N_=1 then do;
set have (where=(year=2004));
base=val;
end;
set have;
index_val=val/base;
drop base;
run;
You simply select the base year value into a macro variable first and use it in your data step like this
data have;
input year val;
datalines;
2000 50
2001 60
2002 70
2003 75
2004 90
2005 100
2006 120
2007 150
2008 155
2009 200
;
run;
/* Store the base year value in a macro variable */
proc sql;
select val into :base_val
from have
where year =2004;
quit;
data want;
set have;
index_val=val/&base_val;
run;
Hello,
An other possible solution :
data want;
retain base;
if _N_=1 then do;
set have (where=(year=2004));
base=val;
end;
set have;
index_val=val/base;
drop base;
run;
Thanks very much!
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.