<?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: pick the last non-missing value between two variables by the third variable in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/pick-the-last-non-missing-value-between-two-variables-by-the/m-p/615735#M180132</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/108652"&gt;@CHL0320&lt;/a&gt;&amp;nbsp; If I understand you correctly, it's pretty straight forward double DOW&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

data have;
infile cards truncover;
input ID	a	b	visit	c;
cards;
1	.	1.25	6	3.255
1	.	.	7	.
1	3	.	8	8.515
1	.	.	9	
2	.	.	6	1.512
2	.	.	7	6.608
2	.	.	8	
2	.	.	9	13.381
3	.	.	6	2.729
3	.	.	7	5.951
3	.	.	8	8.515
3	.	.	9	11.737
4	0.25	1	6	3.321
4	.	.	7	6.97
4	.	.	8	8.515
4	.	.	9	13.545
;

data want;
 do _n_=1 by 1 until(last.id);
  set have;
  by id;
  t=max(a,b);
  if t then do; t1=visit;t2=t;end;
  if c then do; c1=c;c2=visit;end;
 end;
 do _n_=1 to _n_;
  set have;
  if t2 then if t1=visit then do;
   d=t2;
   output;
  end;
  if t2=. and c2=visit then do;
   d=c1;
   output;
  end;
 end;
 drop c1 c2 t:;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Tue, 07 Jan 2020 18:17:32 GMT</pubDate>
    <dc:creator>novinosrin</dc:creator>
    <dc:date>2020-01-07T18:17:32Z</dc:date>
    <item>
      <title>pick the last non-missing value between two variables by the third variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/pick-the-last-non-missing-value-between-two-variables-by-the/m-p/615722#M180128</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;A SAS rookie needs help in creating a new variable base on the following rule.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1. If a or b is not missing at any visits, then d is equal to the last non-missing values between a and b whichever is greater.&lt;/P&gt;&lt;P&gt;2. if a and b are missing at all visits then d is equal to the last non-missing value of c.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For example, Data like is&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;visit&lt;/TD&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;1.25&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;3.255&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3.00&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;8.515&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;1.512&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;6.608&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&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;2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;13.381&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;2.729&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;5.951&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;8.515&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;11.737&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;0.25&lt;/TD&gt;&lt;TD&gt;1.00&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;3.321&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;6.97&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;8.515&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;13.545&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Data want is&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;visit&lt;/TD&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;TD&gt;d&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3.00&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;8.515&lt;/TD&gt;&lt;TD&gt;3.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;13.381&lt;/TD&gt;&lt;TD&gt;13.381&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;11.737&lt;/TD&gt;&lt;TD&gt;11.737&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;0.25&lt;/TD&gt;&lt;TD&gt;1.00&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;3.321&lt;/TD&gt;&lt;TD&gt;1.00&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Tue, 07 Jan 2020 16:53:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/pick-the-last-non-missing-value-between-two-variables-by-the/m-p/615722#M180128</guid>
      <dc:creator>CHL0320</dc:creator>
      <dc:date>2020-01-07T16:53:04Z</dc:date>
    </item>
    <item>
      <title>Re: pick the last non-missing value between two variables by the third variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/pick-the-last-non-missing-value-between-two-variables-by-the/m-p/615735#M180132</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/108652"&gt;@CHL0320&lt;/a&gt;&amp;nbsp; If I understand you correctly, it's pretty straight forward double DOW&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

data have;
infile cards truncover;
input ID	a	b	visit	c;
cards;
1	.	1.25	6	3.255
1	.	.	7	.
1	3	.	8	8.515
1	.	.	9	
2	.	.	6	1.512
2	.	.	7	6.608
2	.	.	8	
2	.	.	9	13.381
3	.	.	6	2.729
3	.	.	7	5.951
3	.	.	8	8.515
3	.	.	9	11.737
4	0.25	1	6	3.321
4	.	.	7	6.97
4	.	.	8	8.515
4	.	.	9	13.545
;

data want;
 do _n_=1 by 1 until(last.id);
  set have;
  by id;
  t=max(a,b);
  if t then do; t1=visit;t2=t;end;
  if c then do; c1=c;c2=visit;end;
 end;
 do _n_=1 to _n_;
  set have;
  if t2 then if t1=visit then do;
   d=t2;
   output;
  end;
  if t2=. and c2=visit then do;
   d=c1;
   output;
  end;
 end;
 drop c1 c2 t:;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 07 Jan 2020 18:17:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/pick-the-last-non-missing-value-between-two-variables-by-the/m-p/615735#M180132</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2020-01-07T18:17:32Z</dc:date>
    </item>
    <item>
      <title>Re: pick the last non-missing value between two variables by the third variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/pick-the-last-non-missing-value-between-two-variables-by-the/m-p/615901#M180210</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data have;
infile cards truncover expandtabs;
input ID	a	b	visit	c;
cards;
1	.	1.25	6	3.255
1	.	.	7	.
1	3	.	8	8.515
1	.	.	9	
2	.	.	6	1.512
2	.	.	7	6.608
2	.	.	8	
2	.	.	9	13.381
3	.	.	6	2.729
3	.	.	7	5.951
3	.	.	8	8.515
3	.	.	9	11.737
4	0.25	1	6	3.321
4	.	.	7	6.97
4	.	.	8	8.515
4	.	.	9	13.545
;

data want;
 do i=1 by 1 until(last.id);
  set have;
  by id;
  if not missing(a) or not missing(b) then idx=i;
 end;
 if missing(idx) then do;flag=1;idx=i;end;
 do j=1 by 1 until(last.id);
  set have;
  by id;
  if j&amp;lt;=idx and not missing(c) then do; 
   _a=a;_b=b;_visit=visit;_c=c;
   if flag then d=c;
     else d=coalesce(b,a);
  end;
 end;
 keep id _: d;
 run;
 &lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 08 Jan 2020 12:30:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/pick-the-last-non-missing-value-between-two-variables-by-the/m-p/615901#M180210</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2020-01-08T12:30:29Z</dc:date>
    </item>
  </channel>
</rss>

