<?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: Setting a variable to a lagging value based on a flag possible using lag function in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Setting-a-variable-to-a-lagging-value-based-on-a-flag-possible/m-p/790339#M253024</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

data have;
 infile cards truncover;
 input ID 	Dispflag	DRDiagnose;
 cards;
1	1	 
2	. 	3
2	 .	7
2	1	
3	.	12
3	1	 
4	1	 
5	.	2
5	.	8
5	1	 
6	.	2
6	1	 
7	1	 
8	1	 
9	.	6
9	.	14
9	.	14
9	1	 
;


data want ;
  set have ;
  by id ;
  retain t ;
  if first.id then t = . ;
  if DRDiagnose then t = DRDiagnose ;
  if Dispflag and not DRDiagnose and t then DRDiagnose = t ;
  drop t ;
run ;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Sat, 15 Jan 2022 17:48:48 GMT</pubDate>
    <dc:creator>novinosrin</dc:creator>
    <dc:date>2022-01-15T17:48:48Z</dc:date>
    <item>
      <title>Setting a variable to a lagging value based on a flag possible using lag function</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Setting-a-variable-to-a-lagging-value-based-on-a-flag-possible/m-p/790338#M253023</link>
      <description>&lt;P&gt;Hi All,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have a dataset that can be simplified to the following for the purpose of my question:&lt;/P&gt;
&lt;TABLE style="border-collapse: collapse; width: 144pt;" border="0" width="192" cellspacing="0" cellpadding="0"&gt;
&lt;TBODY&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD width="64" height="19" style="height: 14.5pt; width: 48pt;"&gt;ID&lt;/TD&gt;
&lt;TD width="64" style="width: 48pt;"&gt;Dispflag&lt;/TD&gt;
&lt;TD width="64" style="width: 48pt;"&gt;DRDiagnose&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;1&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;2&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;2&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;7&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;2&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;3&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;12&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;3&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;4&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;5&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;5&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;8&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;5&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;6&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;6&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;7&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;8&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;9&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;6&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;9&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;14&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;9&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;14&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;9&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;for each ID I want to set the value of DRDiagnose to the previous value of DRDiagnose if the Dispflag is 1. If there is no previous value for DRDiagnose for that ID (like for ID 1, 7, or &lt;span class="lia-unicode-emoji" title=":smiling_face_with_sunglasses:"&gt;😎&lt;/span&gt; then the value will remain missing. Basically, I want to get the following dataset:&lt;/P&gt;
&lt;TABLE style="border-collapse: collapse; width: 144pt;" border="0" width="192" cellspacing="0" cellpadding="0"&gt;
&lt;TBODY&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD width="64" height="19" style="height: 14.5pt; width: 48pt;"&gt;ID&lt;/TD&gt;
&lt;TD width="64" style="width: 48pt;"&gt;Dispflag&lt;/TD&gt;
&lt;TD width="64" style="width: 48pt;"&gt;DRDiagnose&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;1&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;2&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;2&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;7&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;2&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD align="right"&gt;7&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;3&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;12&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;3&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD align="right"&gt;12&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;4&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;5&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;5&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;8&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;5&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD align="right"&gt;8&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;6&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;6&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD align="right"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;7&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;8&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;9&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;6&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;9&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;14&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;9&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;14&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" align="right" style="height: 14.5pt;"&gt;9&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD align="right"&gt;14&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I thought I can do it in a&amp;nbsp; few lines of code but it is not working:&lt;/P&gt;
&lt;PRE&gt;data want;
set have;
by ID;
if (Dispflag eq 1) then DRDiagnose=lag(DRDiagnose);
run;&lt;/PRE&gt;
&lt;P&gt;Does anyone know why my code is not working and have a fix for it or another solution to achieve the "want" dataset? Many thanks in advance.&lt;/P&gt;</description>
      <pubDate>Sat, 15 Jan 2022 17:18:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Setting-a-variable-to-a-lagging-value-based-on-a-flag-possible/m-p/790338#M253023</guid>
      <dc:creator>Primavera</dc:creator>
      <dc:date>2022-01-15T17:18:52Z</dc:date>
    </item>
    <item>
      <title>Re: Setting a variable to a lagging value based on a flag possible using lag function</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Setting-a-variable-to-a-lagging-value-based-on-a-flag-possible/m-p/790339#M253024</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

data have;
 infile cards truncover;
 input ID 	Dispflag	DRDiagnose;
 cards;
1	1	 
2	. 	3
2	 .	7
2	1	
3	.	12
3	1	 
4	1	 
5	.	2
5	.	8
5	1	 
6	.	2
6	1	 
7	1	 
8	1	 
9	.	6
9	.	14
9	.	14
9	1	 
;


data want ;
  set have ;
  by id ;
  retain t ;
  if first.id then t = . ;
  if DRDiagnose then t = DRDiagnose ;
  if Dispflag and not DRDiagnose and t then DRDiagnose = t ;
  drop t ;
run ;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 15 Jan 2022 17:48:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Setting-a-variable-to-a-lagging-value-based-on-a-flag-possible/m-p/790339#M253024</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2022-01-15T17:48:48Z</dc:date>
    </item>
    <item>
      <title>Re: Setting a variable to a lagging value based on a flag possible using lag function</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Setting-a-variable-to-a-lagging-value-based-on-a-flag-possible/m-p/790508#M253111</link>
      <description>&lt;PRE&gt;data have;
 infile cards truncover;
 input ID  Dispflag DRDiagnose;
 cards;
1 1  
2 .  3
2  . 7
2 1 
3 . 12
3 1  
4 1  
5 . 2
5 . 8
5 1  
6 . 2
6 1  
7 1  
8 1  
9 . 6
9 . 14
9 . 14
9 1  
;


data want ;
  set have ;
  lag=lag(DRDiagnose);
  if id=lag(id) and Dispflag then DRDiagnose=lag ;
  drop lag;
run;&lt;/PRE&gt;</description>
      <pubDate>Mon, 17 Jan 2022 12:41:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Setting-a-variable-to-a-lagging-value-based-on-a-flag-possible/m-p/790508#M253111</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2022-01-17T12:41:40Z</dc:date>
    </item>
    <item>
      <title>Re: Setting a variable to a lagging value based on a flag possible using lag function</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Setting-a-variable-to-a-lagging-value-based-on-a-flag-possible/m-p/790559#M253130</link>
      <description>&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you very much for your help. I tried this but it did not work. I was not able to fix it either. But using retain is an excellent idea. I was so stalked with lag that I did not even think of retain &lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 17 Jan 2022 18:23:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Setting-a-variable-to-a-lagging-value-based-on-a-flag-possible/m-p/790559#M253130</guid>
      <dc:creator>Primavera</dc:creator>
      <dc:date>2022-01-17T18:23:09Z</dc:date>
    </item>
    <item>
      <title>Re: Setting a variable to a lagging value based on a flag possible using lag function</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Setting-a-variable-to-a-lagging-value-based-on-a-flag-possible/m-p/790561#M253131</link>
      <description>&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you so much. All that was needed was to add that dummy variable "lag" and drop it at the end. Very interesting.&lt;/P&gt;</description>
      <pubDate>Mon, 17 Jan 2022 18:28:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Setting-a-variable-to-a-lagging-value-based-on-a-flag-possible/m-p/790561#M253131</guid>
      <dc:creator>Primavera</dc:creator>
      <dc:date>2022-01-17T18:28:54Z</dc:date>
    </item>
  </channel>
</rss>

