<?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: Pad out dataset with new rows in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Pad-out-dataset-with-new-rows/m-p/358794#M84342</link>
    <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Create a master dataset with all the dates/MOB needed for every report. In the step before you're proc report you can merge that dataset with the one you have. Then run the proc report without issues.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 15 May 2017 17:07:09 GMT</pubDate>
    <dc:creator>Reeza</dc:creator>
    <dc:date>2017-05-15T17:07:09Z</dc:date>
    <item>
      <title>Pad out dataset with new rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Pad-out-dataset-with-new-rows/m-p/358775#M84334</link>
      <description>&lt;P&gt;I have a program that creates a proc report at the end.&amp;nbsp; This shows a cohort of data with the variable names in the define statement as 1 to 60 (these are created via a transpose earlier in the process, which is how they are named as a numeric).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However, depending on what criteria a user has selected earlier in the process, it may be there are not 60 months of data to report on.&amp;nbsp; When this happens, sas obviously falls over.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;To get around this, I want to try and identify the maximum number of months data I do have in my dataset (variable name MOB) and when this is less than 60, add a new row with the next MOB number.&amp;nbsp; Repeat until you have 60 rows of data.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My dataset looks like this...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;DTE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Balance_Remaining&lt;BR /&gt;01/01/16&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.97&lt;BR /&gt;01/01/16&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.95&lt;BR /&gt;01/01/16&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.92&lt;BR /&gt;01/01/16&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.91&lt;BR /&gt;------&lt;BR /&gt;01/02/16&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.95&lt;BR /&gt;01/02/16&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.89&lt;BR /&gt;01/02/16&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.82&lt;BR /&gt;01/02/16&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.77&lt;/P&gt;&lt;P&gt;------&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Does anyone know a simple way of running through the MOB by DTE and adding in a row with a missing Balance_Remaining?&amp;nbsp; In the above example, the code would need to add from MOB 4 to MOB 60.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Many thanks&lt;/P&gt;</description>
      <pubDate>Mon, 15 May 2017 15:57:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Pad-out-dataset-with-new-rows/m-p/358775#M84334</guid>
      <dc:creator>Jamie_H</dc:creator>
      <dc:date>2017-05-15T15:57:29Z</dc:date>
    </item>
    <item>
      <title>Re: Pad out dataset with new rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Pad-out-dataset-with-new-rows/m-p/358780#M84335</link>
      <description>&lt;P&gt;Try next code:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; by DTE;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if last.dte and MOB &amp;lt; 60 then do;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; call missing(balance_remaining);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; do mob=mob+1 to 60;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;output;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;run;&lt;/P&gt;</description>
      <pubDate>Mon, 15 May 2017 16:16:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Pad-out-dataset-with-new-rows/m-p/358780#M84335</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2017-05-15T16:16:45Z</dc:date>
    </item>
    <item>
      <title>Re: Pad out dataset with new rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Pad-out-dataset-with-new-rows/m-p/358787#M84339</link>
      <description>&lt;P&gt;I think you would need another explicit OUTPUT statement in &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/88384"&gt;@Shmuel&lt;/a&gt; 's code.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data&lt;/STRONG&gt; want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;by DTE;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; output;/*modified here*/&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if last.dte and MOB &amp;lt; &lt;STRONG&gt;60&lt;/STRONG&gt; then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call missing(balance_remaining);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do mob=mob+&lt;STRONG&gt;1&lt;/STRONG&gt; to &lt;STRONG&gt;60&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;STRONG&gt;run&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Naveen Srinivasan&lt;/P&gt;</description>
      <pubDate>Mon, 15 May 2017 16:33:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Pad-out-dataset-with-new-rows/m-p/358787#M84339</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2017-05-15T16:33:41Z</dc:date>
    </item>
    <item>
      <title>Re: Pad out dataset with new rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Pad-out-dataset-with-new-rows/m-p/358789#M84340</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt;&amp;nbsp;you are absolutly right.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;thank you.&lt;/P&gt;</description>
      <pubDate>Mon, 15 May 2017 16:36:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Pad-out-dataset-with-new-rows/m-p/358789#M84340</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2017-05-15T16:36:08Z</dc:date>
    </item>
    <item>
      <title>Re: Pad out dataset with new rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Pad-out-dataset-with-new-rows/m-p/358794#M84342</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Create a master dataset with all the dates/MOB needed for every report. In the step before you're proc report you can merge that dataset with the one you have. Then run the proc report without issues.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 15 May 2017 17:07:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Pad-out-dataset-with-new-rows/m-p/358794#M84342</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2017-05-15T17:07:09Z</dc:date>
    </item>
    <item>
      <title>Re: Pad out dataset with new rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Pad-out-dataset-with-new-rows/m-p/358797#M84344</link>
      <description>&lt;P&gt;This is one way of implementing &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13879"&gt;@Reeza&lt;/a&gt;'s master data file approach. Dataset below represents the name of you dataset that needs the extra rows. If there are other variables needed from dataset then add them to the select statement in the final SQL step.&lt;/P&gt;
&lt;PRE&gt;proc sql;
   create table base as
   selecte distinct dte
   from dataset
   ;
quit;

data need;
   set base;
   do mob=0 to 60;
      output;
   end;
run;

proc sql;
   create table want
   as select a.dte,a.mob,b.balance_remaining
   from need as a left join dataset as b
      on a.dte=b.dte and a.mob=b.mob
   ;
quit;&lt;/PRE&gt;</description>
      <pubDate>Mon, 15 May 2017 17:18:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Pad-out-dataset-with-new-rows/m-p/358797#M84344</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2017-05-15T17:18:20Z</dc:date>
    </item>
  </channel>
</rss>

