<?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: calculate variable by looping specifics rows in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673453#M202599</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
count = 0;
do until (last.product);
  set have;
  by product;
  count + 1;
  if count = 2 then secval = value_quantile;
end;
lastval = value_quantile;
do until (last.product);
  set have;
  by product;
  if first.product then do;
    ratio1 = (secval - value_quantile) / value_quantile;
    ratio2 = (lastval - secval) / secval;
  end;
  else do;
    ratio1 = .;
    ratio2 = .;
  end;
  output;
end;
drop count secval lastval;
run;
  &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Untested, for lack of usable data; please post example data in a data step with datalines.&lt;/P&gt;</description>
    <pubDate>Thu, 30 Jul 2020 14:19:48 GMT</pubDate>
    <dc:creator>Kurt_Bremser</dc:creator>
    <dc:date>2020-07-30T14:19:48Z</dc:date>
    <item>
      <title>calculate variable by looping specifics rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673445#M202591</link>
      <description>&lt;P&gt;Hello, I wan't to calculate RATIO1 and RATIO2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;PRODUCT&lt;/TD&gt;&lt;TD&gt;QUANTILE&lt;/TD&gt;&lt;TD&gt;VALUE_QUANTILE&lt;/TD&gt;&lt;TD&gt;RATIO1&lt;/TD&gt;&lt;TD&gt;RATIO2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;P1&lt;/TD&gt;&lt;TD&gt;5%&lt;/TD&gt;&lt;TD&gt;24&lt;/TD&gt;&lt;TD&gt;(60-24)/24&lt;/TD&gt;&lt;TD&gt;(300-60)/60&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;P1&lt;/TD&gt;&lt;TD&gt;50%&lt;/TD&gt;&lt;TD&gt;60&lt;/TD&gt;&lt;TD&gt;-&lt;/TD&gt;&lt;TD&gt;-&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;P1&lt;/TD&gt;&lt;TD&gt;95%&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;TD&gt;-&lt;/TD&gt;&lt;TD&gt;-&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;P2&lt;/TD&gt;&lt;TD&gt;5%&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;(400-1)/1&lt;/TD&gt;&lt;TD&gt;(500-400)/400&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;P2&lt;/TD&gt;&lt;TD&gt;50%&lt;/TD&gt;&lt;TD&gt;400&lt;/TD&gt;&lt;TD&gt;-&lt;/TD&gt;&lt;TD&gt;-&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;P2&lt;/TD&gt;&lt;TD&gt;95%&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;-&lt;/TD&gt;&lt;TD&gt;-&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;P3&lt;/TD&gt;&lt;TD&gt;5%&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;TD&gt;(450-300)/300&lt;/TD&gt;&lt;TD&gt;(600-450)/450&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;P3&lt;/TD&gt;&lt;TD&gt;50%&lt;/TD&gt;&lt;TD&gt;450&lt;/TD&gt;&lt;TD&gt;-&lt;/TD&gt;&lt;TD&gt;-&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;P3&lt;/TD&gt;&lt;TD&gt;95%&lt;/TD&gt;&lt;TD&gt;600&lt;/TD&gt;&lt;TD&gt;-&lt;/TD&gt;&lt;TD&gt;-&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Thu, 30 Jul 2020 14:11:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673445#M202591</guid>
      <dc:creator>mazouz</dc:creator>
      <dc:date>2020-07-30T14:11:02Z</dc:date>
    </item>
    <item>
      <title>Re: calculate variable by looping specifics rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673447#M202593</link>
      <description>&lt;P&gt;Is this for reporting purposes or do you want a SAS data set like this?&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jul 2020 14:11:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673447#M202593</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-07-30T14:11:20Z</dc:date>
    </item>
    <item>
      <title>Re: calculate variable by looping specifics rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673448#M202594</link>
      <description>&lt;P&gt;I wan't solution by using step data or proc sql&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jul 2020 14:13:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673448#M202594</guid>
      <dc:creator>mazouz</dc:creator>
      <dc:date>2020-07-30T14:13:03Z</dc:date>
    </item>
    <item>
      <title>Re: calculate variable by looping specifics rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673451#M202597</link>
      <description>&lt;P&gt;Is your data actually structured like this? 3 obs for each id?&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jul 2020 14:14:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673451#M202597</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-07-30T14:14:43Z</dc:date>
    </item>
    <item>
      <title>Re: calculate variable by looping specifics rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673453#M202599</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
count = 0;
do until (last.product);
  set have;
  by product;
  count + 1;
  if count = 2 then secval = value_quantile;
end;
lastval = value_quantile;
do until (last.product);
  set have;
  by product;
  if first.product then do;
    ratio1 = (secval - value_quantile) / value_quantile;
    ratio2 = (lastval - secval) / secval;
  end;
  else do;
    ratio1 = .;
    ratio2 = .;
  end;
  output;
end;
drop count secval lastval;
run;
  &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Untested, for lack of usable data; please post example data in a data step with datalines.&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jul 2020 14:19:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673453#M202599</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-07-30T14:19:48Z</dc:date>
    </item>
    <item>
      <title>Re: calculate variable by looping specifics rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673454#M202600</link>
      <description>&lt;P&gt;Yes the number of obs in each id is constant&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jul 2020 14:19:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673454#M202600</guid>
      <dc:creator>mazouz</dc:creator>
      <dc:date>2020-07-30T14:19:58Z</dc:date>
    </item>
    <item>
      <title>Re: calculate variable by looping specifics rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673457#M202601</link>
      <description>&lt;P&gt;Ok. Then do something like this&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input PRODUCT $ 1-2 QUANTILE $ 4-6 VALUE_QUANTILE;
datalines;
P1 5%  24  
P1 50% 60  
P1 95% 300 
P2 5%  1   
P2 50% 400 
P2 95% 500 
P3 5%  300 
P3 50% 450 
P3 95% 600 
;

data want(drop=v2 v3);
   merge have
         have(firstobs=2 rename=VALUE_QUANTILE=v2 keep=VALUE_QUANTILE)
         have(firstobs=3 rename=VALUE_QUANTILE=v3 keep=VALUE_QUANTILE);
   if quantile = '5%' then do;
      ratio1 = (v2 - VALUE_QUANTILE) / VALUE_QUANTILE;
      ratio2 = (v3 - v2) / v2;
   end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;PRODUCT QUANTILE VALUE_QUANTILE ratio1 ratio2 
P1      5%       24             1.5    4.00000 
P1      50%      60             .      . 
P1      95%      300            .      . 
P2      5%       1              399.0  0.25000 
P2      50%      400            .      . 
P2      95%      500            .      . 
P3      5%       300            0.5    0.33333 
P3      50%      450            .      . 
P3      95%      600            .      . 
&lt;/PRE&gt;</description>
      <pubDate>Thu, 30 Jul 2020 14:29:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673457#M202601</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-07-30T14:29:01Z</dc:date>
    </item>
    <item>
      <title>Re: calculate variable by looping specifics rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673480#M202612</link>
      <description>&lt;P&gt;thank you&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/11562"&gt;@Kurt_Bremser&lt;/a&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;your solution also works&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jul 2020 15:49:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673480#M202612</guid>
      <dc:creator>mazouz</dc:creator>
      <dc:date>2020-07-30T15:49:21Z</dc:date>
    </item>
    <item>
      <title>Re: calculate variable by looping specifics rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673482#M202613</link>
      <description>Thank you Draycut</description>
      <pubDate>Thu, 30 Jul 2020 15:50:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673482#M202613</guid>
      <dc:creator>mazouz</dc:creator>
      <dc:date>2020-07-30T15:50:43Z</dc:date>
    </item>
    <item>
      <title>Re: calculate variable by looping specifics rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673509#M202624</link>
      <description>&lt;P&gt;Anytime&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jul 2020 17:31:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/calculate-variable-by-looping-specifics-rows/m-p/673509#M202624</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-07-30T17:31:34Z</dc:date>
    </item>
  </channel>
</rss>

