<?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: How to write new rows from bottom to top? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-write-new-rows-from-bottom-to-top/m-p/455412#M284292</link>
    <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/123840"&gt;@Datino&lt;/a&gt;&amp;nbsp;That's correct. Well done!&lt;/P&gt;</description>
    <pubDate>Wed, 18 Apr 2018 21:41:18 GMT</pubDate>
    <dc:creator>novinosrin</dc:creator>
    <dc:date>2018-04-18T21:41:18Z</dc:date>
    <item>
      <title>How to write new rows from bottom to top?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-write-new-rows-from-bottom-to-top/m-p/455305#M284287</link>
      <description>&lt;P&gt;So I have a SAS Dataset that looks like this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data tmp;
	input val1 val2;
	datalines;
19.02 3.98
;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And I want to add new calculated rows on top of the one I have. Say I want to add 4&amp;nbsp;more rows, the one I already have would be observation #5. So I want to add observation #4, which is calculated with the values from obs #5, obs #3 is calculated from obs#4 and so on. Like this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;rowNcol1*const&lt;/TD&gt;&lt;TD&gt;rowNcol2*const&lt;/TD&gt;&lt;TD&gt;rowNcol3*const&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;row3col1*const&lt;/TD&gt;&lt;TD&gt;row3col2*const&lt;/TD&gt;&lt;TD&gt;row3col3*const&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;row4col1*const&lt;/TD&gt;&lt;TD&gt;row4col2*const&lt;/TD&gt;&lt;TD&gt;row4col3*const&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19.02&lt;/TD&gt;&lt;TD&gt;3.98&lt;/TD&gt;&lt;TD&gt;0.015&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;if const=355 then&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The first calculated row would be:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;19.02*355=6752.1&lt;/TD&gt;&lt;TD&gt;3.98*355=1412.9&lt;/TD&gt;&lt;TD&gt;0.015*355=5.325&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And the first three:&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;850933402.5&lt;/TD&gt;&lt;TD&gt;178060722.5&lt;/TD&gt;&lt;TD&gt;671083.125&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2396995.5&lt;/TD&gt;&lt;TD&gt;501579.5&lt;/TD&gt;&lt;TD&gt;1890.375&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6752.1&lt;/TD&gt;&lt;TD&gt;1412.9&lt;/TD&gt;&lt;TD&gt;5.325&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19.02&lt;/TD&gt;&lt;TD&gt;3.98&lt;/TD&gt;&lt;TD&gt;0.015&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What would be the best way to do this with SAS code?&lt;/P&gt;</description>
      <pubDate>Wed, 18 Apr 2018 17:58:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-write-new-rows-from-bottom-to-top/m-p/455305#M284287</guid>
      <dc:creator>Datino</dc:creator>
      <dc:date>2018-04-18T17:58:28Z</dc:date>
    </item>
    <item>
      <title>Re: How to write new rows from bottom to top?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-write-new-rows-from-bottom-to-top/m-p/455331#M284288</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/123840"&gt;@Datino&lt;/a&gt;wrote:&lt;BR /&gt;&lt;P&gt;&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;rowNcol1*const&lt;/TD&gt;&lt;TD&gt;rowNcol2*const&lt;/TD&gt;&lt;TD&gt;rowNcol3*const&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;row3col1*const&lt;/TD&gt;&lt;TD&gt;row3col2*const&lt;/TD&gt;&lt;TD&gt;row3col3*const&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;row4col1*const&lt;/TD&gt;&lt;TD&gt;row4col2*const&lt;/TD&gt;&lt;TD&gt;row4col3*const&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19.02&lt;/TD&gt;&lt;TD&gt;3.98&lt;/TD&gt;&lt;TD&gt;0.015&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What would be the best way to do this with SAS code?&lt;/P&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;Can you please post clear figures of your expected output? Thank you!&lt;/P&gt;</description>
      <pubDate>Wed, 18 Apr 2018 17:43:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-write-new-rows-from-bottom-to-top/m-p/455331#M284288</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-04-18T17:43:37Z</dc:date>
    </item>
    <item>
      <title>Re: How to write new rows from bottom to top?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-write-new-rows-from-bottom-to-top/m-p/455341#M284289</link>
      <description>&lt;P&gt;Surely, thank you for replying.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;const=355&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The first calculated row would be (just the numeric results, I added the whole operation for clarity):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;19.02*355=6752.1&lt;/TD&gt;&lt;TD&gt;3.98*355=1412.9&lt;/TD&gt;&lt;TD&gt;0.015*355=5.325&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And the first three:&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;850933402.5&lt;/TD&gt;&lt;TD&gt;178060722.5&lt;/TD&gt;&lt;TD&gt;671083.125&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2396995.5&lt;/TD&gt;&lt;TD&gt;501579.5&lt;/TD&gt;&lt;TD&gt;1890.375&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6752.1&lt;/TD&gt;&lt;TD&gt;1412.9&lt;/TD&gt;&lt;TD&gt;5.325&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19.02&lt;/TD&gt;&lt;TD&gt;3.98&lt;/TD&gt;&lt;TD&gt;0.015&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Wed, 18 Apr 2018 17:57:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-write-new-rows-from-bottom-to-top/m-p/455341#M284289</guid>
      <dc:creator>Datino</dc:creator>
      <dc:date>2018-04-18T17:57:19Z</dc:date>
    </item>
    <item>
      <title>Re: How to write new rows from bottom to top?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-write-new-rows-from-bottom-to-top/m-p/455342#M284290</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data tmp;
	input val1 val2;
	datalines;
19.02 3.98
;
run;
%let const=355;
%let rows_to_add=4;
data _null_;
if _n_=1 then do;
   dcl hash H (ordered: "A") ;
   h.definekey  ("_n_") ;
   h.definedata ("val1", "val2") ;
   h.definedone () ;
end; 
set tmp;
_n_=5;
h.add();
do _n_= &amp;amp;rows_to_add to 1 by -1;
val1=val1*&amp;amp;const;
val2=val2*&amp;amp;const;
h.add();
output;
end;
h.output(dataset:'want');
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;I did the above as a matter of fun. However, if you want a robust code run in&amp;nbsp; production environment, we shall discuss and I am happy to help you with that, although this seemed like a simple quiz/interview question &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 18 Apr 2018 18:19:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-write-new-rows-from-bottom-to-top/m-p/455342#M284290</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-04-18T18:19:33Z</dc:date>
    </item>
    <item>
      <title>Re: How to write new rows from bottom to top?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-write-new-rows-from-bottom-to-top/m-p/455410#M284291</link>
      <description>&lt;P&gt;Thanks, it's not for a production environment, I'm just trying to&amp;nbsp;convert some stuff I did in Excel to SAS.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I found that increasing the value of rows_to_add above 4 produces a duplicate key error. Got around that by changing line 17 from your code to&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;_n_=&amp;amp;rows_to_add. +1;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 18 Apr 2018 21:38:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-write-new-rows-from-bottom-to-top/m-p/455410#M284291</guid>
      <dc:creator>Datino</dc:creator>
      <dc:date>2018-04-18T21:38:56Z</dc:date>
    </item>
    <item>
      <title>Re: How to write new rows from bottom to top?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-write-new-rows-from-bottom-to-top/m-p/455412#M284292</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/123840"&gt;@Datino&lt;/a&gt;&amp;nbsp;That's correct. Well done!&lt;/P&gt;</description>
      <pubDate>Wed, 18 Apr 2018 21:41:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-write-new-rows-from-bottom-to-top/m-p/455412#M284292</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-04-18T21:41:18Z</dc:date>
    </item>
    <item>
      <title>Re: How to write new rows from bottom to top?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-write-new-rows-from-bottom-to-top/m-p/455426#M284293</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/123840"&gt;@Datino&lt;/a&gt;&amp;nbsp;If your question has been answered, you could close the thread marking the question as answered&lt;/P&gt;</description>
      <pubDate>Thu, 19 Apr 2018 00:39:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-write-new-rows-from-bottom-to-top/m-p/455426#M284293</guid>
      <dc:creator>MarkWik</dc:creator>
      <dc:date>2018-04-19T00:39:27Z</dc:date>
    </item>
    <item>
      <title>Re: How to write new rows from bottom to top?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-write-new-rows-from-bottom-to-top/m-p/455575#M284294</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data tmp;
	input val1 val2;
	datalines;
19.02 3.98
;
run;
%let const=355;
%let rows_to_add=4;

data want;
 set tmp;
 i=0;output;
    do i=1 to &amp;amp;rows_to_add;
      val1=val1*&amp;amp;const;val2=val2*&amp;amp;const;output;    
    end;
run;
proc sort data=want;
 by descending i;
run;
proc print noobs;run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 19 Apr 2018 12:43:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-write-new-rows-from-bottom-to-top/m-p/455575#M284294</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2018-04-19T12:43:35Z</dc:date>
    </item>
    <item>
      <title>Re: How to write new rows from bottom to top?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-write-new-rows-from-bottom-to-top/m-p/455914#M284295</link>
      <description>Thank you, I like your approach.</description>
      <pubDate>Fri, 20 Apr 2018 13:50:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-write-new-rows-from-bottom-to-top/m-p/455914#M284295</guid>
      <dc:creator>Datino</dc:creator>
      <dc:date>2018-04-20T13:50:09Z</dc:date>
    </item>
  </channel>
</rss>

