User Tools

Site Tools


Implement aging using a map

If you need to age a stock by 1 year you can create a map which moves all stock up 1 in the age sequence and bins the last 2 years with the following code:

integer $firstAge = 0
integer $lastAge = 100

local eafrToea[ea,eafr] = create (; dim=SEQ;age:$firstAge:$lastAge:1;year, \
eafrToea[ea,eafr] = insert (extract (diag (1.0; \
	dimFrom1=eafrToea[ea,eafr]); \
	age:+0..-1); \
	1->age:+1, 2->ageFr:+0)
eafrToea[ea,eafr] = insert (1.0; age:-0, ageFr:-0)

table (eafrToea[ea,eafr]) ! Just to prove to yourself it worked, comment it out later

Now you can just apply the map to your stock (not the change of sequence name just before the map!):

local agedStock[upperDims,ea] = map (changeseq (stock[upperDims,ea]; \
   dim=age, name=ageFr), \
howtos/implementagingwithmap/apply_aging_using_a_map.txt · Last modified: 2010/10/19 14:24 by shona.weldon