<?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: Conditionally insert a row for unique id in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Conditionally-insert-a-row-for-unique-id/m-p/547384#M151691</link>
    <description>&lt;P&gt;Below should work.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data want;
  set have;
  /* also sorted by test_score to ensure Recommendation is the last row within an id */
  by id test_score;
  output;

  array _test_score {3} 8 _temporary_;
  if not last.id then
    do;
      select(upcase(test_component));
        when('ENGLISH') _test_score[1]=test_score;
        when('MATH')    _test_score[2]=test_score;
        when('SCIENCE') _test_score[3]=test_score;
        otherwise;
      end;
    end;

  else
  if last.id then
    do;
      if upcase(test_component) ne 'RECOMMENDATION' then
        do;
          test_component='Recommendation';
          if _test_score[1]&amp;lt;4 and _test_score[2]&amp;lt;4 and _test_score[3]&amp;lt;7 then score_letter='Dip';
/*          else if....*/
          call missing(test_id, test_score);
          output;
        end;
      call missing(of _test_score[*]);
    end;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Sat, 30 Mar 2019 04:19:45 GMT</pubDate>
    <dc:creator>Patrick</dc:creator>
    <dc:date>2019-03-30T04:19:45Z</dc:date>
    <item>
      <title>Conditionally insert a row for unique id</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditionally-insert-a-row-for-unique-id/m-p/547366#M151677</link>
      <description>&lt;P&gt;Hi there, I need help with conditionally inserting a missing data row for each unique id. I have the following &lt;STRONG&gt;sample date:&lt;/STRONG&gt;&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;Id&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;Test_date&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;Test_id&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;Test_component&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;Test_score&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;Score_letter&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;20-09-2011&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;XYZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;English&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2.5&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;20-09-2011&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;XYZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Math&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;4.0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;20-09-2011&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;XYZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Science&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;6.0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;20-09-2011&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Recommendation&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;DIP&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;30-05-2015&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;XYZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;English&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;4.5&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;30-05-2015&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;XYZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Math&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;7&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;30-05-2015&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;XYZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Science&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;30-05-2015&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Recommendation&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;DEG&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;18-12-2013&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;XYZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;English&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;4.5&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;18-12-2013&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;XYZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Math&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;18-12-2013&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;XYZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Science&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;8&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;12-12-2012&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;XYZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;English&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;4.5&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;12-12-2012&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;XYZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Math&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;4.5&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;12-12-2012&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;XYZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Science&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;8&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;12-12-2012&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Recommendation&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;MAS&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The recommendation is based on the following &lt;STRONG&gt;grid&lt;/STRONG&gt;:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;Test_component/Scores&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;Score_letter&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;English&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Math&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Science&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;DIP&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;lt;4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;lt;4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;lt;7&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;DEG&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;7&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;MAS&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;4.5&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;4.5&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;8&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;BR /&gt;A student would need the above exact scores for each of the components for that score_letter to get that particular recommendation. So, for example, to get a recommendation of 'MAS', s/he would need a score of 4.5 each in English and Math and a 8 in Science. In case s/he gets a 3 in English, 4 in Math and 8 in Science, the recommendation would be based on the lowest, so would be 'DIP'.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am missing the recommendation for some students as seen for id #3 (it will be 'DEG' here) above and need to insert the row based on the conditions for the score_letter. Can somebody please help me figure this out? I am at a complete loss here. Thanks in advance.&lt;/P&gt;</description>
      <pubDate>Sat, 30 Mar 2019 01:25:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditionally-insert-a-row-for-unique-id/m-p/547366#M151677</guid>
      <dc:creator>PDevi</dc:creator>
      <dc:date>2019-03-30T01:25:24Z</dc:date>
    </item>
    <item>
      <title>Re: Conditionally insert a row for unique id</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditionally-insert-a-row-for-unique-id/m-p/547384#M151691</link>
      <description>&lt;P&gt;Below should work.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data want;
  set have;
  /* also sorted by test_score to ensure Recommendation is the last row within an id */
  by id test_score;
  output;

  array _test_score {3} 8 _temporary_;
  if not last.id then
    do;
      select(upcase(test_component));
        when('ENGLISH') _test_score[1]=test_score;
        when('MATH')    _test_score[2]=test_score;
        when('SCIENCE') _test_score[3]=test_score;
        otherwise;
      end;
    end;

  else
  if last.id then
    do;
      if upcase(test_component) ne 'RECOMMENDATION' then
        do;
          test_component='Recommendation';
          if _test_score[1]&amp;lt;4 and _test_score[2]&amp;lt;4 and _test_score[3]&amp;lt;7 then score_letter='Dip';
/*          else if....*/
          call missing(test_id, test_score);
          output;
        end;
      call missing(of _test_score[*]);
    end;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 30 Mar 2019 04:19:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditionally-insert-a-row-for-unique-id/m-p/547384#M151691</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2019-03-30T04:19:45Z</dc:date>
    </item>
    <item>
      <title>Re: Conditionally insert a row for unique id</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditionally-insert-a-row-for-unique-id/m-p/547394#M151695</link>
      <description>&lt;PRE&gt;/*&lt;CODE class=" language-sas"&gt;&lt;/CODE&gt;Please let us know if it worked for you.*/&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data std_data;
infile cards dlm='|' dsd missover;
input Id:best12. Test_date:ddmmyy10. Test_id:$4. Test_component:$20. Test_score:best12.;
format Test_date:ddmmyy10.;
cards;
1|20-09-2011|XYZ|English|2.5
1|20-09-2011|XYZ|Math|4
1|20-09-2011|XYZ|Science|6
2|30-05-2015|XYZ|English|4.5
2|30-05-2015|XYZ|Math|7
2|30-05-2015|XYZ|Science|4
3|18-12-2013|XYZ|English|4.5
3|18-12-2013|XYZ|Math|4
3|18-12-2013|XYZ|Science|8
4|12-12-2012|XYZ|English|4.5
4|12-12-2012|XYZ|Math|4.5
4|12-12-2012|XYZ|Science|8
;
run;

proc transpose data=std_data out=std_data_trans;
by id Test_date Test_id;
var Test_score;
id Test_component;
run;

data condn;
infile cards dlm='|' dsd missover;
input Score_letter:$3. English:$5. Math:$5. Science:$5. ;
cards;
DIP|&amp;lt;4|&amp;lt;4|&amp;lt;7
DEG|4|4|7
MAS|4.5|4.5|8
;
run;

data want;
set std_data_trans;
if English lt 4 and Math lt 4 and Science lt 7 then Score_letter='DIP';
else if English le 4.5 and Math le 4.5 and Science lt 8 then Score_letter='DEG';
else if English ge 4.5 and Math ge 4.5 and Science ge 8 then Score_letter='MAS';
run;

proc transpose data=want out=want_trans;
by id Test_date Test_id;
var English Math Science Score_letter;
run;

data want_trans(drop=Test_Score rename=(_name_=Test_component Test_Score1=Test_Score));
set want_trans;
if _name_='Score_letter' then do;
	Test_id='';
	Test_component='Recommendation';
	Score_letter=Test_Score;
	Test_Score='';
end;
Test_Score1=input(Test_Score,best12.);
run;

&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 30 Mar 2019 07:47:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditionally-insert-a-row-for-unique-id/m-p/547394#M151695</guid>
      <dc:creator>Satish_Parida</dc:creator>
      <dc:date>2019-03-30T07:47:10Z</dc:date>
    </item>
  </channel>
</rss>

