<?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: Conditional retain in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Conditional-retain/m-p/570034#M160712</link>
    <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/243648"&gt;@vidyasagar1&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Below code returns how I understand the logic you describe. The result differs slightly from what you've posted as desired result.&lt;/P&gt;
&lt;P&gt;I assumed typos in your desired result. If that's not the case then can you please explain the logic required to get to the values where the numbers differ.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data one;
  infile datalines;
  input Level 1. Component $6.;
  datalines;
1 78950
2 78951
3 67890
4 31234
4 45678
4 45679
4 34567
3 89456
4 89012
4 89015
4 67892
3 89016
2 76548
3 89456
4 89765
1 78951
2 99987
3 89891
4 77889
4 77989
4 79867
4 98765
3 89763
4 98657
4 67543
4 45637
;
run;

data want;
  set one;
  by level notsorted;
  array _comp_new {0:9} $6 _temporary_;
  if last.level then
    do;
      _comp_new[level]=Component;
      if level=1 then _comp_new[0]=Component;
    end;
  Component_New=_comp_new[level-1];
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Sat, 29 Jun 2019 10:05:51 GMT</pubDate>
    <dc:creator>Patrick</dc:creator>
    <dc:date>2019-06-29T10:05:51Z</dc:date>
    <item>
      <title>Conditional retain</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-retain/m-p/569986#M160690</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data one;
 infile datalines;
 input Level 1. Component $5.;
 datalines;
1	78950
2	78951
3	67890
4	31234
4	45678
4	45679
4	34567
3	89456
4	89012
4	89015
4	67892
3	89016
2	76548
3	89456
4	89765
1	78951
2	99987
3	89891
4	77889
4	77989
4	79867
4	98765
3	89763
4	98657
4	67543
4	45637
;run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;I have data like above and i need to get the output like below;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Level&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Component&lt;/TD&gt;&lt;TD&gt;Component_New&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;78950&lt;/TD&gt;&lt;TD&gt;78950&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;78951&lt;/TD&gt;&lt;TD&gt;78950&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;67890&lt;/TD&gt;&lt;TD&gt;78951&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;31234&lt;/TD&gt;&lt;TD&gt;67890&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;45678&lt;/TD&gt;&lt;TD&gt;67890&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;45679&lt;/TD&gt;&lt;TD&gt;67890&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;34567&lt;/TD&gt;&lt;TD&gt;67890&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;89456&lt;/TD&gt;&lt;TD&gt;67890&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;89012&lt;/TD&gt;&lt;TD&gt;67890&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;89015&lt;/TD&gt;&lt;TD&gt;67890&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;67892&lt;/TD&gt;&lt;TD&gt;67890&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;89016&lt;/TD&gt;&lt;TD&gt;78951&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;76548&lt;/TD&gt;&lt;TD&gt;78950&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;89456&lt;/TD&gt;&lt;TD&gt;76548&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;89765&lt;/TD&gt;&lt;TD&gt;89456&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;78951&lt;/TD&gt;&lt;TD&gt;78951&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;99987&lt;/TD&gt;&lt;TD&gt;78951&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;89891&lt;/TD&gt;&lt;TD&gt;99987&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;77889&lt;/TD&gt;&lt;TD&gt;89891&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;77989&lt;/TD&gt;&lt;TD&gt;89891&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;79867&lt;/TD&gt;&lt;TD&gt;89891&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;98765&lt;/TD&gt;&lt;TD&gt;89891&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;89763&lt;/TD&gt;&lt;TD&gt;99987&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;98657&lt;/TD&gt;&lt;TD&gt;89763&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;67543&lt;/TD&gt;&lt;TD&gt;89763&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;45637&lt;/TD&gt;&lt;TD&gt;89763&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Fri, 28 Jun 2019 20:55:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-retain/m-p/569986#M160690</guid>
      <dc:creator>vidyasagar1</dc:creator>
      <dc:date>2019-06-28T20:55:53Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional retain</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-retain/m-p/569993#M160696</link>
      <description>&lt;P&gt;So what is rule (or rules) involved in which value is "retained"?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I do not see any obvious pattern so you need to supply details.&lt;/P&gt;</description>
      <pubDate>Fri, 28 Jun 2019 21:04:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-retain/m-p/569993#M160696</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2019-06-28T21:04:13Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional retain</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-retain/m-p/570031#M160711</link>
      <description>&lt;P&gt;If level=1 then component_new=component and if level=2 then component_new=component of Level1 and if level=3 then component_new=component of Level2 and if level=4 then component_new=component of Level3 and so on.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If level=1 component value changes then component_new for Level2 has to retain new value.&lt;/P&gt;&lt;P&gt;If level=2 component value changes then component_new for Level3 has to retain new value and so on.&lt;/P&gt;</description>
      <pubDate>Sat, 29 Jun 2019 06:34:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-retain/m-p/570031#M160711</guid>
      <dc:creator>vidyasagar1</dc:creator>
      <dc:date>2019-06-29T06:34:53Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional retain</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-retain/m-p/570034#M160712</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/243648"&gt;@vidyasagar1&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Below code returns how I understand the logic you describe. The result differs slightly from what you've posted as desired result.&lt;/P&gt;
&lt;P&gt;I assumed typos in your desired result. If that's not the case then can you please explain the logic required to get to the values where the numbers differ.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data one;
  infile datalines;
  input Level 1. Component $6.;
  datalines;
1 78950
2 78951
3 67890
4 31234
4 45678
4 45679
4 34567
3 89456
4 89012
4 89015
4 67892
3 89016
2 76548
3 89456
4 89765
1 78951
2 99987
3 89891
4 77889
4 77989
4 79867
4 98765
3 89763
4 98657
4 67543
4 45637
;
run;

data want;
  set one;
  by level notsorted;
  array _comp_new {0:9} $6 _temporary_;
  if last.level then
    do;
      _comp_new[level]=Component;
      if level=1 then _comp_new[0]=Component;
    end;
  Component_New=_comp_new[level-1];
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 29 Jun 2019 10:05:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-retain/m-p/570034#M160712</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2019-06-29T10:05:51Z</dc:date>
    </item>
    <item>
      <title>Re: Conditional retain</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditional-retain/m-p/571235#M161136</link>
      <description>&lt;P&gt;Thank you so much i struggled a lot for this.&lt;/P&gt;&lt;P&gt;I greatly appreciate your help.&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jul 2019 12:41:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditional-retain/m-p/571235#M161136</guid>
      <dc:creator>vidyasagar1</dc:creator>
      <dc:date>2019-07-04T12:41:35Z</dc:date>
    </item>
  </channel>
</rss>

