<?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 how assign missing values when first occurence or last occurence groups are missed in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/how-assign-missing-values-when-first-occurence-or-last-occurence/m-p/543782#M150340</link>
    <description>&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;country&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;date&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;amount&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;ind&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;345&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;ind&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;ind&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;463&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;aus&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;aus&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;357&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;aus&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;500&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;usa&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;345&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;usa&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;222&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;usa&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;463&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;I have above dataset like 3 groups one groups has first record value is missing so in that place value should be like last record value in that group and&lt;/P&gt;&lt;P&gt;one group has somewhere values missing so assign first occurence value like see below dataset&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;&lt;P&gt;&lt;STRONG&gt;country&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;date&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;amount&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;ind&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;345&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;ind&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;345&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;ind&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;463&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;aus&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;500&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;aus&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;357&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;aus&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;500&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;usa&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;345&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;usa&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;222&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;usa&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;463&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
    <pubDate>Sun, 17 Mar 2019 10:55:14 GMT</pubDate>
    <dc:creator>thanikondharish</dc:creator>
    <dc:date>2019-03-17T10:55:14Z</dc:date>
    <item>
      <title>how assign missing values when first occurence or last occurence groups are missed</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-assign-missing-values-when-first-occurence-or-last-occurence/m-p/543782#M150340</link>
      <description>&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;country&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;date&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;amount&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;ind&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;345&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;ind&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;ind&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;463&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;aus&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;aus&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;357&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;aus&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;500&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;usa&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;345&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;usa&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;222&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;usa&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;463&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;I have above dataset like 3 groups one groups has first record value is missing so in that place value should be like last record value in that group and&lt;/P&gt;&lt;P&gt;one group has somewhere values missing so assign first occurence value like see below dataset&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;&lt;P&gt;&lt;STRONG&gt;country&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;date&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;amount&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;ind&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;345&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;ind&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;345&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;ind&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;463&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;aus&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;500&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;aus&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;357&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;aus&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;500&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;usa&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;345&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;usa&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;222&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;usa&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03MAR2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;463&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Sun, 17 Mar 2019 10:55:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-assign-missing-values-when-first-occurence-or-last-occurence/m-p/543782#M150340</guid>
      <dc:creator>thanikondharish</dc:creator>
      <dc:date>2019-03-17T10:55:14Z</dc:date>
    </item>
    <item>
      <title>Re: how assign missing values when first occurence or last occurence groups are missed</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-assign-missing-values-when-first-occurence-or-last-occurence/m-p/543787#M150342</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input country $
date : $20.
amount ;
cards;
ind
01MAR2019
345
ind
02MAR2019
.
ind
03MAR2019
463
aus
01MAR2019
.
aus
02MAR2019
357
aus
03MAR2019
500
usa
01MAR2019
345
usa
02MAR2019
222
usa
03MAR2019
463
;

data temp;
 set have;
 by country notsorted;
 retain new_amount;
 if first.country then call missing(new_amount);
 if not missing(amount) then new_amount=amount;
run;
data temp(index=(country));
 set temp;
 by country new_amount notsorted;
 if first.country then n=0;
 n+first.new_amount;
run;
data k;
 set temp;
 by country;
 if last.country;
 keep country new_amount;
run;
data want;
 merge temp k(rename=(new_amount=_amount));
 by country;
 if missing(new_amount) and n=1 then new_amount=_amount;
 drop n _amount;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 17 Mar 2019 11:35:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-assign-missing-values-when-first-occurence-or-last-occurence/m-p/543787#M150342</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2019-03-17T11:35:45Z</dc:date>
    </item>
    <item>
      <title>Re: how assign missing values when first occurence or last occurence groups are missed</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-assign-missing-values-when-first-occurence-or-last-occurence/m-p/543793#M150347</link>
      <description>&lt;P&gt;What if the last value in a by-group is missing? I.e what if the value for USA, 03MAR2019 is missing?&lt;/P&gt;</description>
      <pubDate>Sun, 17 Mar 2019 12:57:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-assign-missing-values-when-first-occurence-or-last-occurence/m-p/543793#M150347</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2019-03-17T12:57:25Z</dc:date>
    </item>
    <item>
      <title>Re: how assign missing values when first occurence or last occurence groups are missed</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-assign-missing-values-when-first-occurence-or-last-occurence/m-p/543847#M150360</link>
      <description>&lt;P&gt;Below should implement the logic you're after.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data want(drop=_:);
  do until(last.country);
    set have;
    by country notsorted;
    _first_nonMiss_amount=coalesce(_first_nonMiss_amount,amount);
    _last_non_Miss_amount =coalesce(amount,_last_non_Miss_amount);
  end;

  do until(last.country);
    set have;
    by country notsorted;
    if missing(amount) then
      do;
        if first.country then amount=_last_non_Miss_amount;
        else amount=_first_nonMiss_amount;
      end; 
    output;
  end;
  call missing(_first_nonMiss_amount, _last_non_Miss_amount);
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 17 Mar 2019 22:42:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-assign-missing-values-when-first-occurence-or-last-occurence/m-p/543847#M150360</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2019-03-17T22:42:56Z</dc:date>
    </item>
    <item>
      <title>Re: how assign missing values when first occurence or last occurence groups are missed</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-assign-missing-values-when-first-occurence-or-last-occurence/m-p/543972#M150392</link>
      <description>&lt;P&gt;I would use a SET statement with POINT= to look forward:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=have;
  by country date;
run;

data want;
  set have nobs=nobs;
  by country;
  if first.country or not missing(amount) then
    prev_amount=amount;
  retain prev_amount;
  amount=coalesce(amount,prev_amount);
  if not last.country then do _P_=_N_+1 to nobs while(missing(amount));
    set have(drop=date rename=(amount=next_amount country=next_country)) point=_P_;
    if country ne next_country then leave;
    amount=coalesce(amount,next_amount);
    end;
  drop prev_: next_:;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 18 Mar 2019 12:53:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-assign-missing-values-when-first-occurence-or-last-occurence/m-p/543972#M150392</guid>
      <dc:creator>s_lassen</dc:creator>
      <dc:date>2019-03-18T12:53:19Z</dc:date>
    </item>
  </channel>
</rss>

