<?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 Subtracting from different rows meeting certain criteria in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Subtracting-from-different-rows-meeting-certain-criteria/m-p/396311#M95669</link>
    <description>&lt;P&gt;I want to subtract one record from the other where the years are the same without hard coding the years. I think I'm complicating it more than it has to be so hope someone has an easier solution.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What I have:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Data sample_data;&lt;/P&gt;&lt;P&gt;input Fiscal_Yr$ ValueX Category$ ;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;FY17 &amp;nbsp;7 A&lt;/P&gt;&lt;P&gt;FY17 21 B&lt;/P&gt;&lt;P&gt;FY18 5 A&lt;/P&gt;&lt;P&gt;FY18 15 B&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;Run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need an end result that has the difference between category B minus A bsed on fiscal year with a new category C.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;FY17 14 C&lt;/P&gt;&lt;P&gt;FY18 10 C&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help is appreciated. &amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 15 Sep 2017 13:21:03 GMT</pubDate>
    <dc:creator>CLE</dc:creator>
    <dc:date>2017-09-15T13:21:03Z</dc:date>
    <item>
      <title>Subtracting from different rows meeting certain criteria</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtracting-from-different-rows-meeting-certain-criteria/m-p/396311#M95669</link>
      <description>&lt;P&gt;I want to subtract one record from the other where the years are the same without hard coding the years. I think I'm complicating it more than it has to be so hope someone has an easier solution.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What I have:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Data sample_data;&lt;/P&gt;&lt;P&gt;input Fiscal_Yr$ ValueX Category$ ;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;FY17 &amp;nbsp;7 A&lt;/P&gt;&lt;P&gt;FY17 21 B&lt;/P&gt;&lt;P&gt;FY18 5 A&lt;/P&gt;&lt;P&gt;FY18 15 B&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;Run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need an end result that has the difference between category B minus A bsed on fiscal year with a new category C.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;FY17 14 C&lt;/P&gt;&lt;P&gt;FY18 10 C&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help is appreciated. &amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Sep 2017 13:21:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtracting-from-different-rows-meeting-certain-criteria/m-p/396311#M95669</guid>
      <dc:creator>CLE</dc:creator>
      <dc:date>2017-09-15T13:21:03Z</dc:date>
    </item>
    <item>
      <title>Re: Subtracting from different rows meeting certain criteria</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtracting-from-different-rows-meeting-certain-criteria/m-p/396327#M95674</link>
      <description>&lt;P&gt;Two approaches: either use RETAIN to remember values between observations, do the math, and logic for output your WANT observation.&lt;/P&gt;
&lt;P&gt;Or, use SQL and join the table with itself (use alias for a filtering sub-query where you select A to be joined with B observations).&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;select a.Fiscal_Yr, b.ValueX - a.ValueX as diff, 'C' as Category
from (select * from sampla_data where Category = 'A') as a
inner join (select * from sampla_data where Category = 'B') as b
on a.Fiscal_Yr = b.Fiscal_Yr
;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 15 Sep 2017 13:42:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtracting-from-different-rows-meeting-certain-criteria/m-p/396327#M95674</guid>
      <dc:creator>LinusH</dc:creator>
      <dc:date>2017-09-15T13:42:59Z</dc:date>
    </item>
    <item>
      <title>Re: Subtracting from different rows meeting certain criteria</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtracting-from-different-rows-meeting-certain-criteria/m-p/396334#M95676</link>
      <description>&lt;P&gt;I've changed your first data step to reflect the variable names I think you intended otherwise this should give you what you want&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Data sample_data;
input Fiscal_Yr $ ValueX Category $ ;
datalines;
FY17  7 A
FY17 21 B
FY18 5 A
FY18 15 B
;
Run;

proc sort data=sample_data;
	by fiscal_yr category;
run;

data want(drop=pre_val);
	set sample_data;
	by fiscal_yr category;
	pre_val=lag(valuex);
	if last.fiscal_yr then do;
		category="C";
		valuex=valuex-pre_val;
		output;
	end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 15 Sep 2017 13:55:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtracting-from-different-rows-meeting-certain-criteria/m-p/396334#M95676</guid>
      <dc:creator>ChrisBrooks</dc:creator>
      <dc:date>2017-09-15T13:55:00Z</dc:date>
    </item>
    <item>
      <title>Re: Subtracting from different rows meeting certain criteria</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtracting-from-different-rows-meeting-certain-criteria/m-p/396342#M95680</link>
      <description>&lt;P&gt;Thank you for the reply.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Sep 2017 14:15:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtracting-from-different-rows-meeting-certain-criteria/m-p/396342#M95680</guid>
      <dc:creator>CLE</dc:creator>
      <dc:date>2017-09-15T14:15:08Z</dc:date>
    </item>
    <item>
      <title>Re: Subtracting from different rows meeting certain criteria</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtracting-from-different-rows-meeting-certain-criteria/m-p/396343#M95681</link>
      <description>&lt;P&gt;Thank you for the reply!&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Sep 2017 14:17:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtracting-from-different-rows-meeting-certain-criteria/m-p/396343#M95681</guid>
      <dc:creator>CLE</dc:creator>
      <dc:date>2017-09-15T14:17:07Z</dc:date>
    </item>
    <item>
      <title>Re: Subtracting from different rows meeting certain criteria</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtracting-from-different-rows-meeting-certain-criteria/m-p/396442#M95706</link>
      <description>&lt;P&gt;If the&amp;nbsp;Fiscal_Yr are sets of two, you can skip by group processing:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Data&lt;/STRONG&gt; sample_data;&lt;/P&gt;&lt;P&gt;input Fiscal_Yr$ ValueX Category$ ;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;FY17&amp;nbsp; 7 A&lt;/P&gt;&lt;P&gt;FY17 21 B&lt;/P&gt;&lt;P&gt;FY18 5 A&lt;/P&gt;&lt;P&gt;FY18 15 B&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Run&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data&lt;/STRONG&gt; want(drop=t);&lt;/P&gt;&lt;P&gt;set sample_data;&lt;/P&gt;&lt;P&gt;t=lag(ValueX);&lt;/P&gt;&lt;P&gt;if mod(_n_,&lt;STRONG&gt;2&lt;/STRONG&gt;)=&lt;STRONG&gt;0&lt;/STRONG&gt; then do;&lt;/P&gt;&lt;P&gt;ValueX=ValueX-t;&lt;/P&gt;&lt;P&gt;Category='C';&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Sep 2017 17:57:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtracting-from-different-rows-meeting-certain-criteria/m-p/396442#M95706</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2017-09-15T17:57:46Z</dc:date>
    </item>
    <item>
      <title>Re: Subtracting from different rows meeting certain criteria</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtracting-from-different-rows-meeting-certain-criteria/m-p/396445#M95707</link>
      <description>&lt;P&gt;That's true&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt;&amp;nbsp;but I'd still be inclined to sort the file "just in case" because you know that if you don't then one day it'll be out of order &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Sep 2017 18:18:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtracting-from-different-rows-meeting-certain-criteria/m-p/396445#M95707</guid>
      <dc:creator>ChrisBrooks</dc:creator>
      <dc:date>2017-09-15T18:18:17Z</dc:date>
    </item>
    <item>
      <title>Re: Subtracting from different rows meeting certain criteria</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtracting-from-different-rows-meeting-certain-criteria/m-p/396446#M95708</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/32246"&gt;@ChrisBrooks&lt;/a&gt;&amp;nbsp;Absolutely right, Can't avoid a sort. I took the sample as it was already sorted. I guess the only way to avoid a sort is proc sql or hashes. Linus gave the SQL solution, you gave the datastep and I had some fun. lol. And, I am not so keen to give a hash solution for this req. &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Sep 2017 18:22:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtracting-from-different-rows-meeting-certain-criteria/m-p/396446#M95708</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2017-09-15T18:22:25Z</dc:date>
    </item>
    <item>
      <title>Re: Subtracting from different rows meeting certain criteria</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Subtracting-from-different-rows-meeting-certain-criteria/m-p/396448#M95710</link>
      <description>&lt;P&gt;Using self merge.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Data sample_data;
	input Fiscal_Yr$ ValueX Category$;
	datalines;
FY17  7 A
FY17 21 B
FY18 5 A
FY18 15 B
;
Run;

data tmp;
	merge sample_data sample_data(firstobs=2 rename = (Valuex= _Valuex Category= _Category));
	Valuex = _Valuex - Valuex;
	Category = "C";
run;

data want (drop = _:);
	do _n_ = 1 to n by 2;
		set tmp point = _n_ nobs= n;
		output;
	end;

	stop;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 15 Sep 2017 18:45:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Subtracting-from-different-rows-meeting-certain-criteria/m-p/396448#M95710</guid>
      <dc:creator>SAS_inquisitive</dc:creator>
      <dc:date>2017-09-15T18:45:43Z</dc:date>
    </item>
  </channel>
</rss>

