<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Arrays Growth Rates in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Arrays-Growth-Rates/m-p/624056#M183764</link>
    <description>&lt;P&gt;Hi there,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Does anyone know know to make a "nice" code using arrays with the following concept?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data  Rgo6;
set Rgo;
Growth_1999=((_999/_998)-1);
Growth_2000=((_000/_999)-1);
Growth_2001=((_001/_000)-1);
Growth_2002 =((_002/_001)-1);
Growth_2003=((_003/_002)-1);
Growth_2004=((_004/_003)-1);
Growth_2005=((_005/_004)-1);
Growth_2006=((_006/_005)-1);
Growth_2007=((_007/_006)-1);
Growth_2008=((_008/_007)-1);
Growth_2009=((_009/_008)-1);
Growth_2010=((_010/_009)-1);
Growth_2011=((_011/_010)-1);
Growth_2012=((_012/_011)-1);
Growth_2013=((_013/_012)-1);
Growth_2014=((_014/_013)-1);
Growth_2015=((_015/_014)-1);
Growth_2016=((_016/_015)-1);
Growth_2017=((_017/_016)-1);
format  Growth_1999  percent10.1;
format  Growth_2000  percent10.1;
format  Growth_2001  percent10.1;
format  Growth_2002  percent10.1;
format  Growth_2003  percent10.1;
format  Growth_2004  percent10.1;
format  Growth_2005  percent10.1;
format  Growth_2006  percent10.1;
format  Growth_2007  percent10.1;
format  Growth_2008  percent10.1;
format  Growth_2009  percent10.1;
format  Growth_2010  percent10.1;
format  Growth_2011  percent10.1;
format  Growth_2012  percent10.1;
format  Growth_2013  percent10.1;
format  Growth_2014  percent10.1;
format  Growth_2015  percent10.1;
format  Growth_2016  percent10.1;
format  Growth_2017  percent10.1;
keep itemACPSA;
keep itemACPSADescr;
keep Growth_1999;
keep Growth_2000;
keep Growth_2001;
keep Growth_2002 ;
keep Growth_2003;
keep Growth_2004;
keep Growth_2005;
keep Growth_2006;
keep Growth_2007;
keep Growth_2008;
keep Growth_2009;
keep Growth_2010;
keep Growth_2011;
keep Growth_2012;
keep Growth_2013;
keep Growth_2014;
keep Growth_2015;
keep Growth_2016;
keep Growth_2017;
RUN;

&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 12 Feb 2020 00:48:55 GMT</pubDate>
    <dc:creator>Afor910327</dc:creator>
    <dc:date>2020-02-12T00:48:55Z</dc:date>
    <item>
      <title>Arrays Growth Rates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Arrays-Growth-Rates/m-p/624056#M183764</link>
      <description>&lt;P&gt;Hi there,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Does anyone know know to make a "nice" code using arrays with the following concept?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data  Rgo6;
set Rgo;
Growth_1999=((_999/_998)-1);
Growth_2000=((_000/_999)-1);
Growth_2001=((_001/_000)-1);
Growth_2002 =((_002/_001)-1);
Growth_2003=((_003/_002)-1);
Growth_2004=((_004/_003)-1);
Growth_2005=((_005/_004)-1);
Growth_2006=((_006/_005)-1);
Growth_2007=((_007/_006)-1);
Growth_2008=((_008/_007)-1);
Growth_2009=((_009/_008)-1);
Growth_2010=((_010/_009)-1);
Growth_2011=((_011/_010)-1);
Growth_2012=((_012/_011)-1);
Growth_2013=((_013/_012)-1);
Growth_2014=((_014/_013)-1);
Growth_2015=((_015/_014)-1);
Growth_2016=((_016/_015)-1);
Growth_2017=((_017/_016)-1);
format  Growth_1999  percent10.1;
format  Growth_2000  percent10.1;
format  Growth_2001  percent10.1;
format  Growth_2002  percent10.1;
format  Growth_2003  percent10.1;
format  Growth_2004  percent10.1;
format  Growth_2005  percent10.1;
format  Growth_2006  percent10.1;
format  Growth_2007  percent10.1;
format  Growth_2008  percent10.1;
format  Growth_2009  percent10.1;
format  Growth_2010  percent10.1;
format  Growth_2011  percent10.1;
format  Growth_2012  percent10.1;
format  Growth_2013  percent10.1;
format  Growth_2014  percent10.1;
format  Growth_2015  percent10.1;
format  Growth_2016  percent10.1;
format  Growth_2017  percent10.1;
keep itemACPSA;
keep itemACPSADescr;
keep Growth_1999;
keep Growth_2000;
keep Growth_2001;
keep Growth_2002 ;
keep Growth_2003;
keep Growth_2004;
keep Growth_2005;
keep Growth_2006;
keep Growth_2007;
keep Growth_2008;
keep Growth_2009;
keep Growth_2010;
keep Growth_2011;
keep Growth_2012;
keep Growth_2013;
keep Growth_2014;
keep Growth_2015;
keep Growth_2016;
keep Growth_2017;
RUN;

&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 12 Feb 2020 00:48:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Arrays-Growth-Rates/m-p/624056#M183764</guid>
      <dc:creator>Afor910327</dc:creator>
      <dc:date>2020-02-12T00:48:55Z</dc:date>
    </item>
    <item>
      <title>Re: Arrays Growth Rates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Arrays-Growth-Rates/m-p/624068#M183767</link>
      <description>&lt;P&gt;You could do something as below.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro typeForMe();
  %do i=1999 %to 2017;
    format  Growth_&amp;amp;i  percent10.1;
    Growth_&amp;amp;i=((_%substr(&amp;amp;i,2)/_%substr(%eval(&amp;amp;i-1),2))-1);
    keep Growth_&amp;amp;i;
  %end;
%mend;

options mprint;
data  rgo6;
  set rgo;
  keep itemacpsa;
  keep itemacpsadescr;
  %typeForMe()
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Or here another (not tested) way of doing this.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data  Rgo6;
  set Rgo;
  keep itemACPSA;
  keep itemACPSADescr;

  array Growth {*} 8 Growth_1999-Growth_2017;
  format Growth_: percent10.1;
  keep Growth_:;

  array source {*} _998 - _016;

  do _i=2 to dim(source);
    Growth[_i-1]=((source[_i-1]/source[_i])-1);
  end;

  drop _i;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And here another option how to generate code. I personally prefer this approach over using a SAS Macro because during development you can use "file print" and easily verify that the generated code is what you want.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;filename codegen temp;
data _null_;
/*  file print;*/
  file codegen;
  do i=1999 to 2017;
    put 'format Growth_' i ';';
    put 'keep Growth_' i ';';
    x1=substrn(put(i,z4.),2);
    x2=substrn(put(i-1,z4.),2);
    put 'Growth_' i '= ((_' x1 '/_' x2 ')-1);'; 
  end;
  stop;
run;

data  Rgo6;
  set Rgo;
  keep itemACPSA;
  keep itemACPSADescr;
  %include codegen / source2;
run;

filename codegen clear;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 12 Feb 2020 02:12:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Arrays-Growth-Rates/m-p/624068#M183767</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2020-02-12T02:12:17Z</dc:date>
    </item>
    <item>
      <title>Re: Arrays Growth Rates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Arrays-Growth-Rates/m-p/624111#M183788</link>
      <description>&lt;P&gt;What you have is a consequence of bad design, or being stuck in "Excel thinking".&lt;/P&gt;
&lt;P&gt;Transpose your dataset to a long format, and the code will be as simple as can be by using the lag() function to compare with the previous observation.&lt;/P&gt;</description>
      <pubDate>Wed, 12 Feb 2020 09:25:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Arrays-Growth-Rates/m-p/624111#M183788</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-02-12T09:25:11Z</dc:date>
    </item>
    <item>
      <title>Re: Arrays Growth Rates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Arrays-Growth-Rates/m-p/624146#M183808</link>
      <description>&lt;P&gt;Very nice, thank you Patrick!&lt;/P&gt;</description>
      <pubDate>Wed, 12 Feb 2020 12:10:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Arrays-Growth-Rates/m-p/624146#M183808</guid>
      <dc:creator>Afor910327</dc:creator>
      <dc:date>2020-02-12T12:10:31Z</dc:date>
    </item>
  </channel>
</rss>

