<?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 Re: How to use array for increment of lagX in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-use-array-for-increment-of-lagX/m-p/305255#M65089</link>
    <description>&lt;P&gt;Your error is referencing a variable that doesn't occur in your code. It is best to copy the code and error at one time from the log and then post using the "run" icon.&lt;/P&gt;</description>
    <pubDate>Mon, 17 Oct 2016 22:13:20 GMT</pubDate>
    <dc:creator>ballardw</dc:creator>
    <dc:date>2016-10-17T22:13:20Z</dc:date>
    <item>
      <title>How to use array for increment of lagX</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-use-array-for-increment-of-lagX/m-p/305216#M65074</link>
      <description>&lt;P&gt;Dear Expert,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have an array but it is not working. I have this&amp;nbsp;WARNING: Apparent symbolic reference I not resolved. How do I write the following program&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data XXX;
&amp;nbsp;
&amp;nbsp; array x {3) x1 - x3;
&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp;x1 = act;
&amp;nbsp; &amp;nbsp; &amp;nbsp;x2 = lag1(act);
&amp;nbsp; &amp;nbsp; &amp;nbsp;x3 = lag2(act);
&amp;nbsp; &amp;nbsp; &amp;nbsp;x4 = lag3(act);
&amp;nbsp;
&amp;nbsp; end;
&amp;nbsp;
run;&lt;/PRE&gt;
&lt;P&gt;into the program&amp;nbsp;below&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data XXX;

&amp;nbsp; array x {3) x1 - x3;

&amp;nbsp; do i = 1 to dim(x); 
&amp;nbsp; &amp;nbsp; &amp;nbsp;x{i} = lag&amp;amp;i.(act);
&amp;nbsp; end;

run;&lt;/PRE&gt;
&lt;P&gt;Thank you so much&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 17 Oct 2016 20:23:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-use-array-for-increment-of-lagX/m-p/305216#M65074</guid>
      <dc:creator>CheerfulChu</dc:creator>
      <dc:date>2016-10-17T20:23:03Z</dc:date>
    </item>
    <item>
      <title>Re: How to use array for increment of lagX</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-use-array-for-increment-of-lagX/m-p/305236#M65080</link>
      <description>&lt;P&gt;Do you want 3 x values in each obs to reflect the last 3 values of act?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Data;&amp;nbsp;&amp;nbsp;&amp;nbsp; set;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;retain&amp;nbsp; x1 x2 x3 0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;x3=x2;&lt;/P&gt;
&lt;P&gt;x2=x1;&lt;/P&gt;
&lt;P&gt;x1=act;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Jim&lt;/P&gt;</description>
      <pubDate>Mon, 17 Oct 2016 20:42:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-use-array-for-increment-of-lagX/m-p/305236#M65080</guid>
      <dc:creator>Jim_G</dc:creator>
      <dc:date>2016-10-17T20:42:21Z</dc:date>
    </item>
    <item>
      <title>Re: How to use array for increment of lagX</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-use-array-for-increment-of-lagX/m-p/305246#M65082</link>
      <description>&lt;P&gt;Hi Jim and astounding,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Actually the number of lags I needed is 20. Also there is computational required for numerator and denominator&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;r1 = x1/a1;
...
r16 = x16 /a16;&lt;/PRE&gt;
&lt;P&gt;where&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;x1 = act - ebb;
x2 = lag(act-ebb);
...
x16 = lag15(act -ebb);

a1 = alpha&amp;nbsp;- beta;
...
a16 = lag15(alpha&amp;nbsp;- beta);&lt;/PRE&gt;
&lt;P&gt;alpha, beta, act, ebb are numbers.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I need it to write it in a data step because the modification I need to do is within a big data step.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;another question:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;lag(act - ebb) = lag(act) - lag(ebb) ?&lt;/PRE&gt;
&lt;P&gt;I want to use the 2nd observations.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 17 Oct 2016 20:54:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-use-array-for-increment-of-lagX/m-p/305246#M65082</guid>
      <dc:creator>CheerfulChu</dc:creator>
      <dc:date>2016-10-17T20:54:03Z</dc:date>
    </item>
    <item>
      <title>Re: How to use array for increment of lagX</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-use-array-for-increment-of-lagX/m-p/305250#M65084</link>
      <description>&lt;P&gt;I can't sketch out the whole thing now, but you can extend the suggestion already made by using arrays.&amp;nbsp; For example:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;set have;&lt;/P&gt;
&lt;P&gt;array x {16};&lt;/P&gt;
&lt;P&gt;retain x1-x16;&lt;/P&gt;
&lt;P&gt;do i=16 to 2 by -1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; x{i} = x{i-1};&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;x1 = act - ebb;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Similar computations need to be added for your other variables, but this is a workable approach.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Yes, you can apply LAG to computations not just to variable names.&lt;/P&gt;</description>
      <pubDate>Mon, 17 Oct 2016 21:14:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-use-array-for-increment-of-lagX/m-p/305250#M65084</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2016-10-17T21:14:30Z</dc:date>
    </item>
    <item>
      <title>Re: How to use array for increment of lagX</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-use-array-for-increment-of-lagX/m-p/305251#M65085</link>
      <description>&lt;P&gt;Your error comes from:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;x{i} = lag&amp;amp;i.(act);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;amp;i represents a MACRO variable that you have not assigned.&lt;/P&gt;
&lt;P&gt;To reference in an array you need to have a variable.&lt;/P&gt;
&lt;P&gt;If you need to create a bunch of lagged variables you might try this brief macro:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro LagStem (basevar=,stem=, NumLags=);
   %do i = 1 %to &amp;amp;numLags;
    stem&amp;amp;i = lag&amp;amp;i(&amp;amp;basevar);
   %end;
%mend;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;And use in your data step&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data XXX;
  %LagStem(basevar=Act,stem=x,NumLags=15);
  array x {15) x1 - x15;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;It will be a very good Idea to call the macro immediately after any SET statement (since lag really doesn't mean much without a Set to read) and before use.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Note that it is up to you make sure to change the basevar and stem values so as not to overwrite your existing variables.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And Lag3 (x-y) isn't going to work. You will need to pull the lagged values in parallel and then calculate them in your data step.&lt;/P&gt;</description>
      <pubDate>Mon, 17 Oct 2016 21:14:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-use-array-for-increment-of-lagX/m-p/305251#M65085</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2016-10-17T21:14:44Z</dc:date>
    </item>
    <item>
      <title>Re: How to use array for increment of lagX</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-use-array-for-increment-of-lagX/m-p/305254#M65088</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data test1; 
  set test; 
  array x {16} x1-x16;
  retain x1-x16; 
  do i = 16 to 2 by -1; 
    x{i} = {i-1}; 
  end; 
  x1 = atq - ibq; 
run;&lt;/PRE&gt;
&lt;P&gt;I encountered this error&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data test1; set test; array x {16} x1-x16;retain x1-x16; do i = 16 to 2 by&lt;BR /&gt;8 ! -1; x{i} = {i-1}; end; x1 = atq - ibq; run;&lt;BR /&gt; -&lt;BR /&gt; 22&lt;BR /&gt;ERROR 22-322: Syntax error, expecting one of the following: a name, INPUT, &lt;BR /&gt; PUT.&lt;/P&gt;
&lt;P&gt;ERROR: Undeclared array referenced: NAME.&lt;BR /&gt;ERROR: Variable NAME has not been declared as an array.&lt;BR /&gt;NOTE: The SAS System stopped processing this step because of errors.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 17 Oct 2016 21:44:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-use-array-for-increment-of-lagX/m-p/305254#M65088</guid>
      <dc:creator>CheerfulChu</dc:creator>
      <dc:date>2016-10-17T21:44:56Z</dc:date>
    </item>
    <item>
      <title>Re: How to use array for increment of lagX</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-use-array-for-increment-of-lagX/m-p/305255#M65089</link>
      <description>&lt;P&gt;Your error is referencing a variable that doesn't occur in your code. It is best to copy the code and error at one time from the log and then post using the "run" icon.&lt;/P&gt;</description>
      <pubDate>Mon, 17 Oct 2016 22:13:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-use-array-for-increment-of-lagX/m-p/305255#M65089</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2016-10-17T22:13:20Z</dc:date>
    </item>
    <item>
      <title>Re: How to use array for increment of lagX</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-use-array-for-increment-of-lagX/m-p/305261#M65093</link>
      <description>&lt;P&gt;The actual code uses this formula:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;x{i} = {i-1};&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It should read:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;x{i} = x{i-1};&lt;/P&gt;</description>
      <pubDate>Mon, 17 Oct 2016 23:03:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-use-array-for-increment-of-lagX/m-p/305261#M65093</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2016-10-17T23:03:24Z</dc:date>
    </item>
    <item>
      <title>Re: How to use array for increment of lagX</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-use-array-for-increment-of-lagX/m-p/305287#M65101</link>
      <description>&lt;P&gt;It is easy for IML.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc iml;
use sashelp.class;
read all var {weight};
close;

lag=lag(weight,(0:4));
print lag;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;OUTPUT:&lt;/P&gt;
&lt;TABLE class="table"&gt;&lt;COLGROUP&gt;&lt;COL /&gt;&lt;COL /&gt;&lt;COL /&gt;&lt;COL /&gt;&lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="c b header" colspan="5" scope="colgroup"&gt;lag&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;112.5&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;84&lt;/TD&gt;
&lt;TD class="r data"&gt;112.5&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;98&lt;/TD&gt;
&lt;TD class="r data"&gt;84&lt;/TD&gt;
&lt;TD class="r data"&gt;112.5&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;102.5&lt;/TD&gt;
&lt;TD class="r data"&gt;98&lt;/TD&gt;
&lt;TD class="r data"&gt;84&lt;/TD&gt;
&lt;TD class="r data"&gt;112.5&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;102.5&lt;/TD&gt;
&lt;TD class="r data"&gt;102.5&lt;/TD&gt;
&lt;TD class="r data"&gt;98&lt;/TD&gt;
&lt;TD class="r data"&gt;84&lt;/TD&gt;
&lt;TD class="r data"&gt;112.5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;83&lt;/TD&gt;
&lt;TD class="r data"&gt;102.5&lt;/TD&gt;
&lt;TD class="r data"&gt;102.5&lt;/TD&gt;
&lt;TD class="r data"&gt;98&lt;/TD&gt;
&lt;TD class="r data"&gt;84&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;84.5&lt;/TD&gt;
&lt;TD class="r data"&gt;83&lt;/TD&gt;
&lt;TD class="r data"&gt;102.5&lt;/TD&gt;
&lt;TD class="r data"&gt;102.5&lt;/TD&gt;
&lt;TD class="r data"&gt;98&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;112.5&lt;/TD&gt;
&lt;TD class="r data"&gt;84.5&lt;/TD&gt;
&lt;TD class="r data"&gt;83&lt;/TD&gt;
&lt;TD class="r data"&gt;102.5&lt;/TD&gt;
&lt;TD class="r data"&gt;102.5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;84&lt;/TD&gt;
&lt;TD class="r data"&gt;112.5&lt;/TD&gt;
&lt;TD class="r data"&gt;84.5&lt;/TD&gt;
&lt;TD class="r data"&gt;83&lt;/TD&gt;
&lt;TD class="r data"&gt;102.5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;99.5&lt;/TD&gt;
&lt;TD class="r data"&gt;84&lt;/TD&gt;
&lt;TD class="r data"&gt;112.5&lt;/TD&gt;
&lt;TD class="r data"&gt;84.5&lt;/TD&gt;
&lt;TD class="r data"&gt;83&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;50.5&lt;/TD&gt;
&lt;TD class="r data"&gt;99.5&lt;/TD&gt;
&lt;TD class="r data"&gt;84&lt;/TD&gt;
&lt;TD class="r data"&gt;112.5&lt;/TD&gt;
&lt;TD class="r data"&gt;84.5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;90&lt;/TD&gt;
&lt;TD class="r data"&gt;50.5&lt;/TD&gt;
&lt;TD class="r data"&gt;99.5&lt;/TD&gt;
&lt;TD class="r data"&gt;84&lt;/TD&gt;
&lt;TD class="r data"&gt;112.5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;77&lt;/TD&gt;
&lt;TD class="r data"&gt;90&lt;/TD&gt;
&lt;TD class="r data"&gt;50.5&lt;/TD&gt;
&lt;TD class="r data"&gt;99.5&lt;/TD&gt;
&lt;TD class="r data"&gt;84&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;112&lt;/TD&gt;
&lt;TD class="r data"&gt;77&lt;/TD&gt;
&lt;TD class="r data"&gt;90&lt;/TD&gt;
&lt;TD class="r data"&gt;50.5&lt;/TD&gt;
&lt;TD class="r data"&gt;99.5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;150&lt;/TD&gt;
&lt;TD class="r data"&gt;112&lt;/TD&gt;
&lt;TD class="r data"&gt;77&lt;/TD&gt;
&lt;TD class="r data"&gt;90&lt;/TD&gt;
&lt;TD class="r data"&gt;50.5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;128&lt;/TD&gt;
&lt;TD class="r data"&gt;150&lt;/TD&gt;
&lt;TD class="r data"&gt;112&lt;/TD&gt;
&lt;TD class="r data"&gt;77&lt;/TD&gt;
&lt;TD class="r data"&gt;90&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;133&lt;/TD&gt;
&lt;TD class="r data"&gt;128&lt;/TD&gt;
&lt;TD class="r data"&gt;150&lt;/TD&gt;
&lt;TD class="r data"&gt;112&lt;/TD&gt;
&lt;TD class="r data"&gt;77&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;85&lt;/TD&gt;
&lt;TD class="r data"&gt;133&lt;/TD&gt;
&lt;TD class="r data"&gt;128&lt;/TD&gt;
&lt;TD class="r data"&gt;150&lt;/TD&gt;
&lt;TD class="r data"&gt;112&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;112&lt;/TD&gt;
&lt;TD class="r data"&gt;85&lt;/TD&gt;
&lt;TD class="r data"&gt;133&lt;/TD&gt;
&lt;TD class="r data"&gt;128&lt;/TD&gt;
&lt;TD class="r data"&gt;150&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;</description>
      <pubDate>Tue, 18 Oct 2016 05:20:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-use-array-for-increment-of-lagX/m-p/305287#M65101</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2016-10-18T05:20:18Z</dc:date>
    </item>
  </channel>
</rss>

