<?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: Create an array of lag functions for150+ variables in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Create-an-array-of-lag-functions-for150-variables/m-p/157975#M30851</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Post example of your data, what you have and what you want.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 27 Mar 2014 00:02:26 GMT</pubDate>
    <dc:creator>Reeza</dc:creator>
    <dc:date>2014-03-27T00:02:26Z</dc:date>
    <item>
      <title>Create an array of lag functions for150+ variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-an-array-of-lag-functions-for150-variables/m-p/157974#M30850</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I need to do a lag function for an id observation which I have working manually, but the number of lag&amp;nbsp; I need keeps changing. So can I use an array to help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I use an array to create the variables at first:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;data&lt;/SPAN&gt; amort4;&amp;nbsp; &lt;SPAN class="s1"&gt;set&lt;/SPAN&gt; amort2;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;array&lt;/SPAN&gt; idT (&lt;SPAN class="s3"&gt;151&lt;/SPAN&gt;) &lt;SPAN class="s2"&gt;$50.&lt;/SPAN&gt; id1-id151;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;/SPAN&gt; i = &lt;SPAN class="s3"&gt;1&lt;/SPAN&gt; &lt;SPAN class="s1"&gt;to&lt;/SPAN&gt; &lt;SPAN class="s3"&gt;151&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s1"&gt;end&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p3"&gt;run&lt;SPAN class="s4"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p3"&gt;&lt;SPAN class="s4"&gt;Second step is&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p3"&gt;&lt;SPAN class="s4"&gt;Then I am manually writing an lag for each (id)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;data&lt;/SPAN&gt; amort5; &lt;SPAN class="s1"&gt;set&lt;/SPAN&gt; amort4;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id1 = lag1(id);&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;id2 = lag2(id);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id3 = lag3(id);&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id4 = lag4(id);&amp;nbsp;&amp;nbsp; /* this goes&amp;nbsp; all the way to 151 with lots of manual typing */&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id151 = lag151(id);&lt;/P&gt;&lt;P class="p2"&gt;run&lt;SPAN class="s1"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;Third step is:&lt;/P&gt;&lt;P class="p2"&gt;Then I basically sort closet to farthest to get the id moved over.&amp;nbsp; I know this is doing things the long way&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;data&lt;/SPAN&gt; amort6; &lt;SPAN class="s3"&gt;*length idf $50. ;&lt;/SPAN&gt; &lt;SPAN class="s2"&gt;set&lt;/SPAN&gt; amort5;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;if&lt;/SPAN&gt; id1 ^= &lt;SPAN class="s4"&gt;""&lt;/SPAN&gt; &lt;SPAN class="s2"&gt;then&lt;/SPAN&gt; idf = id1;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;else&lt;/SPAN&gt; &lt;SPAN class="s2"&gt;if&lt;/SPAN&gt; id2 ^= &lt;SPAN class="s4"&gt;" "&lt;/SPAN&gt; &lt;SPAN class="s2"&gt;then&lt;/SPAN&gt; idf = id2;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;else&lt;/SPAN&gt; &lt;SPAN class="s2"&gt;if&lt;/SPAN&gt; id3 ^= &lt;SPAN class="s4"&gt;" "&lt;/SPAN&gt; &lt;SPAN class="s2"&gt;then&lt;/SPAN&gt; idf = id3;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;else&lt;/SPAN&gt; &lt;SPAN class="s2"&gt;if&lt;/SPAN&gt; id4 ^= &lt;SPAN class="s4"&gt;" "&lt;/SPAN&gt; &lt;SPAN class="s2"&gt;then&lt;/SPAN&gt; idf = id4;&amp;nbsp; /* .... this goes on until id151 */&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;else&lt;/SPAN&gt; &lt;SPAN class="s1"&gt;if&lt;/SPAN&gt; id150 ^= &lt;SPAN class="s2"&gt;" "&lt;/SPAN&gt; &lt;SPAN class="s1"&gt;then&lt;/SPAN&gt; idf = id150;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;else&lt;/SPAN&gt; idf = id151;&lt;/P&gt;&lt;P class="p1"&gt;&lt;/P&gt;&lt;P class="p1"&gt;This gets me an id for every row.&amp;nbsp; Which is alot of manual coding. I would like to be able to use an array or two to set the number of vars created in only one spot.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Mar 2014 23:48:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-an-array-of-lag-functions-for150-variables/m-p/157974#M30850</guid>
      <dc:creator>Thalo</dc:creator>
      <dc:date>2014-03-26T23:48:13Z</dc:date>
    </item>
    <item>
      <title>Re: Create an array of lag functions for150+ variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-an-array-of-lag-functions-for150-variables/m-p/157975#M30851</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Post example of your data, what you have and what you want.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Mar 2014 00:02:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-an-array-of-lag-functions-for150-variables/m-p/157975#M30851</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2014-03-27T00:02:26Z</dc:date>
    </item>
    <item>
      <title>Re: Create an array of lag functions for150+ variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-an-array-of-lag-functions-for150-variables/m-p/157976#M30852</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I figured it out never mind:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;%macro&lt;/SPAN&gt; check;&lt;/P&gt;&lt;P class="p1"&gt;data amort5;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp; set amort2;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;%do&lt;/SPAN&gt; i = 1 &lt;SPAN class="s1"&gt;%to&lt;/SPAN&gt; 400;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; id&lt;SPAN class="s2"&gt;&amp;amp;i&lt;/SPAN&gt; = lag&lt;SPAN class="s2"&gt;&amp;amp;i&lt;/SPAN&gt;(id);&lt;/P&gt;&lt;P class="p2"&gt;%end&lt;SPAN class="s3"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;%mend&lt;/SPAN&gt; check;&lt;/P&gt;&lt;P class="p3"&gt;&lt;/P&gt;&lt;P class="p2"&gt;%check&lt;SPAN class="s3"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p3"&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;%macro&lt;/SPAN&gt; still;&lt;/P&gt;&lt;P class="p1"&gt;data amort6; set amort5;&lt;/P&gt;&lt;P class="p1"&gt;if id1 ^= " " then id = id1;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;%do&lt;/SPAN&gt; i = 2 &lt;SPAN class="s1"&gt;%to&lt;/SPAN&gt; 400;&lt;/P&gt;&lt;P class="p1"&gt;else if id&lt;SPAN class="s2"&gt;&amp;amp;i&lt;/SPAN&gt; ^= " " then id = id&lt;SPAN class="s2"&gt;&amp;amp;i&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p2"&gt;%end&lt;SPAN class="s3"&gt;; &lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;drop id2-id400&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;%mend&lt;/SPAN&gt; still;&lt;/P&gt;&lt;P class="p2"&gt;%still&lt;SPAN class="s3"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Mar 2014 04:52:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-an-array-of-lag-functions-for150-variables/m-p/157976#M30852</guid>
      <dc:creator>Thalo</dc:creator>
      <dc:date>2014-03-27T04:52:01Z</dc:date>
    </item>
  </channel>
</rss>

