<?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: Constant lag creating within a group in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Constant-lag-creating-within-a-group/m-p/806064#M317548</link>
    <description>&lt;P&gt;Please include example data in the form of a data step as shown below, pasted into a text box or code box opened on the forum using the &amp;lt;/&amp;gt; or running man icon.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When we have to guess what types your variables are some suggested solutions may not work with your data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This seems to work for your example data:&lt;/P&gt;
&lt;PRE&gt;data have;
   input ID	Day	NP;
datalines;
117	1	12
117	2	8
117	3	7
117	4	9
117	5	9
117	6	4
117	7	6
342	1	23
342	2	12
342	3	-16
342	4	0
342	5	8
342	6	23
342	7	20
;

data want; 
   set have;
   retain lagd1-lagd6;
   by id;
   l1=lag(np);
   if first.id then call missing(of lagd1-lagd6);
   select (day);
      when (1)  ;
      when (2)  Lagd1 = l1;
      when (3)  Lagd2 = l1;
      when (4)  Lagd3 = l1;
      when (5)  Lagd4 = l1;
      when (6)  Lagd5 = l1;
      when (7)  Lagd6 = l1;
      otherwise ;
   end;
   drop l1;
run;
&lt;/PRE&gt;</description>
    <pubDate>Tue, 05 Apr 2022 14:12:44 GMT</pubDate>
    <dc:creator>ballardw</dc:creator>
    <dc:date>2022-04-05T14:12:44Z</dc:date>
    <item>
      <title>Constant lag creating within a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Constant-lag-creating-within-a-group/m-p/805963#M317507</link>
      <description>&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;I have a following data set where I have uniue ids and each id has 7 lines (Day 1 to Day 7) of observation. I have sorted it by ID and Day. All three variables are in numeric (best12) format.&amp;nbsp;&lt;BR /&gt;Now, I want to create a lag values of NP for each ID. Each lag value should appear in a new column and it will start in following day and continue till day 7. For instance: for ID 342, LagD1 should take NP of Day 1 and it should appear from day 2 and continue till day 7. Similarly, LagD4 should take NP of day 4 and must first appear in day 5 and continue till day 7.&lt;/P&gt;&lt;P&gt;Please, see my have file and want file.&lt;/P&gt;&lt;P&gt;have&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;Day&lt;/TD&gt;&lt;TD&gt;NP&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;117&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;117&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;117&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;117&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;117&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;117&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;117&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;342&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;342&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;342&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;-16&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;342&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;342&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;342&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;342&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;want&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;Day&lt;/TD&gt;&lt;TD&gt;NP&lt;/TD&gt;&lt;TD&gt;LagD1&lt;/TD&gt;&lt;TD&gt;LagD2&lt;/TD&gt;&lt;TD&gt;LagD3&lt;/TD&gt;&lt;TD&gt;LagD4&lt;/TD&gt;&lt;TD&gt;LagD5&lt;/TD&gt;&lt;TD&gt;LagD6&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;117&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;117&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;117&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;117&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;117&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;117&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;117&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;342&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;342&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;342&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;-16&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;342&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;-16&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;342&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;-16&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;342&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;-16&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;342&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;-16&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;Can anyone help me with any sample code?&lt;/P&gt;</description>
      <pubDate>Tue, 05 Apr 2022 00:48:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Constant-lag-creating-within-a-group/m-p/805963#M317507</guid>
      <dc:creator>Nirmol</dc:creator>
      <dc:date>2022-04-05T00:48:09Z</dc:date>
    </item>
    <item>
      <title>Re: Constant lag creating within a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Constant-lag-creating-within-a-group/m-p/806064#M317548</link>
      <description>&lt;P&gt;Please include example data in the form of a data step as shown below, pasted into a text box or code box opened on the forum using the &amp;lt;/&amp;gt; or running man icon.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When we have to guess what types your variables are some suggested solutions may not work with your data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This seems to work for your example data:&lt;/P&gt;
&lt;PRE&gt;data have;
   input ID	Day	NP;
datalines;
117	1	12
117	2	8
117	3	7
117	4	9
117	5	9
117	6	4
117	7	6
342	1	23
342	2	12
342	3	-16
342	4	0
342	5	8
342	6	23
342	7	20
;

data want; 
   set have;
   retain lagd1-lagd6;
   by id;
   l1=lag(np);
   if first.id then call missing(of lagd1-lagd6);
   select (day);
      when (1)  ;
      when (2)  Lagd1 = l1;
      when (3)  Lagd2 = l1;
      when (4)  Lagd3 = l1;
      when (5)  Lagd4 = l1;
      when (6)  Lagd5 = l1;
      when (7)  Lagd6 = l1;
      otherwise ;
   end;
   drop l1;
run;
&lt;/PRE&gt;</description>
      <pubDate>Tue, 05 Apr 2022 14:12:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Constant-lag-creating-within-a-group/m-p/806064#M317548</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2022-04-05T14:12:44Z</dc:date>
    </item>
    <item>
      <title>Re: Constant lag creating within a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Constant-lag-creating-within-a-group/m-p/806071#M317550</link>
      <description>&lt;P&gt;You could just use LAGn() function calls.&lt;/P&gt;
&lt;P&gt;To handle the multiple groups use BY group processing to clear out the invalid values.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input ID Day NP ;
cards;
117 1 12
117 2 8
117 3 7
117 4 9
117 5 9
117 6 4
117 7 6
342 1 23
342 2 12
342 3 -16
342 4 0
342 5 8
342 6 23
342 7 20
;
data want;
   set have;
   by id;
   lagd1=lag1(np);
   lagd2=lag2(np);
   lagd3=lag3(np);
   lagd4=lag4(np);
   lagd5=lag5(np);
   lagd6=lag6(np);
   array lags lagd1-lagd6;
   do _n_=day to dim(lags);
     lags[_n_]=.;
   end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 05 Apr 2022 14:28:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Constant-lag-creating-within-a-group/m-p/806071#M317550</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2022-04-05T14:28:55Z</dc:date>
    </item>
    <item>
      <title>Re: Constant lag creating within a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Constant-lag-creating-within-a-group/m-p/806080#M317553</link>
      <description>&lt;P&gt;You could shift the values over using an ARRAY.&lt;/P&gt;
&lt;P&gt;Wrapping the SET inside a DO loop eliminates the need to worry about retaining the values.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  do until (last.id);
     set have;
     by id;
     length lagd1-lagd6 8;
     array lags lagd6-lagd1 np ;
     output;
     do _n_=1 to dim(lags)-1;
       lags[_n_]=lags[_n_+1];
     end;
  end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 05 Apr 2022 14:39:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Constant-lag-creating-within-a-group/m-p/806080#M317553</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2022-04-05T14:39:17Z</dc:date>
    </item>
    <item>
      <title>Re: Constant lag creating within a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Constant-lag-creating-within-a-group/m-p/806834#M317962</link>
      <description>&lt;P&gt;Thank you. It helped.&lt;/P&gt;</description>
      <pubDate>Fri, 08 Apr 2022 19:05:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Constant-lag-creating-within-a-group/m-p/806834#M317962</guid>
      <dc:creator>Nirmol</dc:creator>
      <dc:date>2022-04-08T19:05:54Z</dc:date>
    </item>
  </channel>
</rss>

