<?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: Duduplication accross rows in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488286#M287366</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data Hierarchy;
 INFILE DATALINES DLM='' missover;
 length CustID $10 L1 $20 L2 $20 L3 $20 L4 $20 L5 $20 L6 $20 L7 $20 L8 $20;
 input CustID  $ L1 $ L2 $ L3 $ L4 $ L5 $ L6 $  L7 $ L8 $;
 cards;
 1 James James Luke Tom Anthony Matthew Jake Brudhy
 2 Peter Peter Raymond Raymond Peter Luke
 ;


proc transpose data=Hierarchy out=_Hierarchy;
by custid;
var l:;
run;
data want;
set _Hierarchy;
by custid col1 notsorted;
array L(8) $ ;
retain l;
if first.custid then do; n=0;call missing(of l(*));end;
if first.col1 then n+1; L(n)=col1;
if last.custid;
drop n col1 _name_ ;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Mon, 20 Aug 2018 17:24:39 GMT</pubDate>
    <dc:creator>novinosrin</dc:creator>
    <dc:date>2018-08-20T17:24:39Z</dc:date>
    <item>
      <title>Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488255#M287364</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;A bit of an interesting issue. I have the following data set:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture.PNG" style="width: 483px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/22617i96E743B774AED77B/image-size/large?v=v2&amp;amp;px=999" role="button" title="Capture.PNG" alt="Capture.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Use the below code to generate table above:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;  data Hierarchy;
 INFILE DATALINES DLM='' missover;
 length CustID $10 L1 $20 L2 $20 L3 $20 L4 $20 L5 $20 L6 $20 L7 $20 L8 $20;
 input CustID  $ L1 $ L2 $ L3 $ L4 $ L5 $ L6 $  L7 $ L8 $;
 cards;
 1 James James Luke Tom Anthony Matthew Jake Brudhy
 2 Peter Peter Raymond Raymond Peter Luke
 ;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Objective:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My objective is to deduplicate across rows. Across each row, if the values for any successive levels (L1,L2...) are the same, I would like to delete the higher level i.e. if L1 and L2 contain same values, then delete L2. However, since blanks can only be present after the last value in each row and not within the row, where duplicates are found and deleted, I would like to shift the values&amp;nbsp;on the right of the empty cell&amp;nbsp;to the&amp;nbsp;left to fill up the deleted cell (arrow in above diagram shows this).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;After doing that, final table should look like this.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture.PNG" style="width: 479px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/22618i38A1CE64F5EBEB5C/image-size/large?v=v2&amp;amp;px=999" role="button" title="Capture.PNG" alt="Capture.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;All empty cells are to the left end of each row.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Does anyone know how to accomplish this?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;</description>
      <pubDate>Mon, 20 Aug 2018 16:00:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488255#M287364</guid>
      <dc:creator>frupaul</dc:creator>
      <dc:date>2018-08-20T16:00:46Z</dc:date>
    </item>
    <item>
      <title>Re: Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488285#M287365</link>
      <description>&lt;P&gt;Let's go into pedagogical mode:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For each row (each "observation" in data step lingo) you want to iteratively do the same process to every successive pairs of neighboring values, namely&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;if "neighboring" values match, then shift to the left all subsequent (further right) neighbors, making sure to replace the right-most value with a blank.&lt;/LI&gt;
&lt;LI&gt;either recheck the current pair of neighbors or (if you know you never have triplets) immediately go to the next pair.&amp;nbsp; By "next pair" I mean step one name to the right - i.e. right-side of current pair becomes left-side next pair.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To implement iterative processes, examine the do loop.&amp;nbsp; For 8 variables, you will want to loop through this process up to 7 times (L1 vs L2, then L2 vs L3, .... L7 vs L8).&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And to facilitate support of the do loop for your task, learn about declaring the list of variables L1, L2, ... L8 as an array, via the ARRAY statement.&amp;nbsp;&amp;nbsp;Once associated with an array, the variables L1-L8 can not only be accessed by their own names, but also as element 1 of the array, element 2 of the array, etc.&amp;nbsp; I.e. you can dismiss using specific variables names, and instead use a loop where you compare element i vs element i+1, and then just increment i in the loop.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 20 Aug 2018 17:21:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488285#M287365</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2018-08-20T17:21:04Z</dc:date>
    </item>
    <item>
      <title>Re: Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488286#M287366</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data Hierarchy;
 INFILE DATALINES DLM='' missover;
 length CustID $10 L1 $20 L2 $20 L3 $20 L4 $20 L5 $20 L6 $20 L7 $20 L8 $20;
 input CustID  $ L1 $ L2 $ L3 $ L4 $ L5 $ L6 $  L7 $ L8 $;
 cards;
 1 James James Luke Tom Anthony Matthew Jake Brudhy
 2 Peter Peter Raymond Raymond Peter Luke
 ;


proc transpose data=Hierarchy out=_Hierarchy;
by custid;
var l:;
run;
data want;
set _Hierarchy;
by custid col1 notsorted;
array L(8) $ ;
retain l;
if first.custid then do; n=0;call missing(of l(*));end;
if first.col1 then n+1; L(n)=col1;
if last.custid;
drop n col1 _name_ ;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 20 Aug 2018 17:24:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488286#M287366</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-08-20T17:24:39Z</dc:date>
    </item>
    <item>
      <title>Re: Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488311#M287367</link>
      <description>&lt;P&gt;Hi Novinosrin,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for the solution. I am dealing with 100000 records. Will this proposed approach work on such high volume data?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 20 Aug 2018 18:33:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488311#M287367</guid>
      <dc:creator>frupaul</dc:creator>
      <dc:date>2018-08-20T18:33:49Z</dc:date>
    </item>
    <item>
      <title>Re: Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488312#M287368</link>
      <description>&lt;P&gt;HI Novinosrin&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for the solution. I am dealing with 100,000 records. Will this proposed approach work on such high volume data?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 20 Aug 2018 18:34:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488312#M287368</guid>
      <dc:creator>frupaul</dc:creator>
      <dc:date>2018-08-20T18:34:59Z</dc:date>
    </item>
    <item>
      <title>Re: Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488313#M287369</link>
      <description>&lt;P&gt;Please test and let the community know. If it's not robust, I am sure you will have get more efficient solutions, however until then play with it&lt;/P&gt;</description>
      <pubDate>Mon, 20 Aug 2018 18:35:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488313#M287369</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-08-20T18:35:51Z</dc:date>
    </item>
    <item>
      <title>Re: Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488340#M287370</link>
      <description>&lt;P&gt;Some fun&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
if _n_=1 then do;
length k $8;
  dcl hash H (multidata:'y') ;
   h.definekey  ("custid") ;
   h.definedata ("custid","k") ;
   h.definedone () ;
   call missing(k);
end;
set Hierarchy ;
array t(*) l:;
do i=1 to dim(t);
if not missing(t(i)) then 
if  i=1 or  t(i) ne t(i-1) then h.add(key:custid,data:custid,data:t(i));
end;
do i=1 by 1 while(h.do_over() eq 0);
t(i)=k;
end;
do i=i to dim(t);
 call missing(t(i));
end;
keep custid l:;
run;

&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 20 Aug 2018 20:11:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488340#M287370</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-08-20T20:11:08Z</dc:date>
    </item>
    <item>
      <title>Re: Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488396#M287372</link>
      <description>&lt;P&gt;Cleaned further and edited some redundant step:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
if _n_=1 then do;
length k $8;
  dcl hash H (multidata:'y') ;
   h.definekey  ("custid") ;
   h.definedata ("k") ;
   h.definedone () ;
   call missing(k);
end;
set Hierarchy ;
array t(*) l:;
do i=1 to dim(t);
if not missing(t(i)) then 
if  i=1 or  t(i) ne t(i-1) then h.add(key:custid,data:t(i));
end;
call missing(of t(*));
do i=1 by 1 while(h.do_over() eq 0);
t(i)=k;
end;
keep custid l:;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 21 Aug 2018 00:19:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488396#M287372</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-08-21T00:19:25Z</dc:date>
    </item>
    <item>
      <title>Re: Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488466#M287373</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt;: Well done. The revised version is more efficient, but interestingly it seems to be still a bit slower than&amp;nbsp;your two-step solution using PROC TRANSPOSE (at least on my computer; probably also depending on input data): With an input dataset containing &lt;EM&gt;10 million&lt;/EM&gt; observations the latter took 24.0 s vs. 26.4 s for the hash solution, which in turn was faster than the below solution using the (slow) PRXCHANGE function (27.3 s) -- all run times averaged over three runs.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want(drop=c i);
length c $176;
set Hierarchy;
array l[8];
c=prxchange('s/(~[^~]+~)(\1)+/\1/', -1, '~'||catx('~~',of l:)||'~');
do i=1 to dim(l);
  l[i]=scan(c,i,'~');
end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;(To avoid truncation, I increased the length specifications for variable k in your hash solution and array L in your two-step solution to $&lt;STRONG&gt;20&lt;/STRONG&gt;.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 21 Aug 2018 09:16:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488466#M287373</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2018-08-21T09:16:47Z</dc:date>
    </item>
    <item>
      <title>Re: Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488468#M287374</link>
      <description>&lt;P&gt;Respect mate. This will have to send me back to school. Short and sleek. Although I have no idea how it works, it works.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;</description>
      <pubDate>Tue, 21 Aug 2018 09:27:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488468#M287374</guid>
      <dc:creator>frupaul</dc:creator>
      <dc:date>2018-08-21T09:27:18Z</dc:date>
    </item>
    <item>
      <title>Re: Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488482#M287375</link>
      <description>&lt;P&gt;Thanks,&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/134464"&gt;@frupaul&lt;/a&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I don't use the PRX functions frequently, so it took me some time to (hopefully) get the regex right.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The third argument of PRXCHANGE encloses&amp;nbsp;the values of L1, ..., L8 in '~'&amp;nbsp;characters&amp;nbsp;(which must not occur in any of the values) and concatenates the results. The resulting string (with a maximum length of (20+2)*8=176) is then searched for a string of the form "~&lt;EM&gt;more characters&lt;/EM&gt;~" (where "&lt;EM&gt;more characters&lt;/EM&gt;" may contain anything but the '~': "[^~]+" means "one or more non-tilde characters") which is followed by one or more occurrences of the same string (this is the "(\1)+" part). If such a duplicate (or triplicate, ...) string is found, it is replaced by only one copy (the final "\1" in the regex). The search/replace operation is continued until the end of the input string is reached (second argument -1).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The enclosing characters (I chose '~' because it is not one of the PRX metacharacters) were necessary to avoid partial matches such as "James" in "James Miller".&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;(I was tempted to&amp;nbsp;use CALL POKELONG to write the final result to L1-L8 --&amp;nbsp;which&amp;nbsp;could have shortened the code further [no array, no DO loop] -- but since CATX does not provide an option to preserve trailing blanks, that was not successful.)&lt;/P&gt;</description>
      <pubDate>Tue, 21 Aug 2018 10:19:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488482#M287375</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2018-08-21T10:19:59Z</dc:date>
    </item>
    <item>
      <title>Re: Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488484#M287376</link>
      <description>&lt;P&gt;Hi FreelanceReinhard,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for the explanation, it makes sense but will become much clearer once I have read the PRX functions.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I will be putting up another question in 5 minutes, along the same line of reasoning as this. But that one will be really challenging. Please share your thoughts when it comes.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;</description>
      <pubDate>Tue, 21 Aug 2018 10:30:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488484#M287376</guid>
      <dc:creator>frupaul</dc:creator>
      <dc:date>2018-08-21T10:30:22Z</dc:date>
    </item>
    <item>
      <title>Re: Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488511#M287377</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/32733"&gt;@FreelanceReinh&lt;/a&gt;&amp;nbsp;Thank you Sir, as always for the details. Your diligence teaches me a lot. And I can't thank you enough for your time in a lot of thread to help me learn a lot. Just waking up in&amp;nbsp; Chicago. Good morning to you. I hope you have a nice day.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 21 Aug 2018 12:02:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488511#M287377</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-08-21T12:02:24Z</dc:date>
    </item>
    <item>
      <title>Re: Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488535#M287378</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data Hierarchy;
 INFILE DATALINES DLM='' missover;
 length CustID $10 L1 $20 L2 $20 L3 $20 L4 $20 L5 $20 L6 $20 L7 $20 L8 $20;
 input CustID  $ L1 $ L2 $ L3 $ L4 $ L5 $ L6 $  L7 $ L8 $;
 cards;
 1 James James Luke Tom Anthony Matthew Jake Brudhy
 2 Peter Peter Raymond Raymond Peter Luke
 ;
data want;
 set Hierarchy;
 array x{*} $ L:;
 array y{9999} $ 100 _temporary_;
 call missing(of y{*});
 j=0;
 do i=1 to dim(x);
   if x{i} not in y then do;j+1;y{j}=x{i};end;
 end;
 do i=1 to dim(x);
   x{i}=y{i};
 end;
 drop i j;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 21 Aug 2018 13:12:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488535#M287378</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2018-08-21T13:12:13Z</dc:date>
    </item>
    <item>
      <title>Re: Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488543#M287379</link>
      <description>&lt;P&gt;You're welcome,&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt;. It's a &lt;EM&gt;mutual&lt;/EM&gt; learning experience. So, thank you, too.&lt;/P&gt;</description>
      <pubDate>Tue, 21 Aug 2018 13:17:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488543#M287379</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2018-08-21T13:17:42Z</dc:date>
    </item>
    <item>
      <title>Re: Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488777#M287380</link>
      <description>&lt;P&gt;Hi Novinosrin,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I will be posting an extension to this problem. Just realised the initial post was an over simplification of the issue. Please do chip in.&lt;/P&gt;&lt;P&gt;The post will have a similar subject to this one.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;</description>
      <pubDate>Wed, 22 Aug 2018 06:10:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488777#M287380</guid>
      <dc:creator>frupaul</dc:creator>
      <dc:date>2018-08-22T06:10:45Z</dc:date>
    </item>
    <item>
      <title>Re: Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488826#M287381</link>
      <description>&lt;P&gt;Good morning, Sure&lt;/P&gt;</description>
      <pubDate>Wed, 22 Aug 2018 11:34:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488826#M287381</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-08-22T11:34:10Z</dc:date>
    </item>
    <item>
      <title>Re: Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488918#M287382</link>
      <description>&lt;P&gt;HI&amp;nbsp; Novinosrin,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please can you recommend a book/journal/publication on Hash Object that can take me from beginner to pro?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Paul&lt;/P&gt;</description>
      <pubDate>Wed, 22 Aug 2018 15:04:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488918#M287382</guid>
      <dc:creator>frupaul</dc:creator>
      <dc:date>2018-08-22T15:04:28Z</dc:date>
    </item>
    <item>
      <title>Re: Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488931#M287383</link>
      <description>&lt;P&gt;Good morning&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/134464"&gt;@frupaul&lt;/a&gt;&amp;nbsp; Here it is&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://communities.sas.com/t5/Community-Matters/Book-Data-Management-Solutions-Using-SAS-Hash-Table-Operations-A/m-p/433642#M3007" target="_blank"&gt;https://communities.sas.com/t5/Community-Matters/Book-Data-Management-Solutions-Using-SAS-Hash-Table-Operations-A/m-p/433642#M3007&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Nothing /Nobody beats that book or Paul Dorfman. Do read that, you are the next Paul as your name already being paul with prefix fru will bear fruit.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;By the way, I have just made it to my college lab as the morning trains were running late. I saw your other post and I noticed few responses. Since we both like hash, I will have a fun response with hash too in a bit&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 22 Aug 2018 15:24:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488931#M287383</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-08-22T15:24:33Z</dc:date>
    </item>
    <item>
      <title>Re: Duduplication accross rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488959#M287384</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/134464"&gt;@frupaul&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The authors&amp;nbsp;of the book &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt;&amp;nbsp;has recommended are of course world-class SAS programmers and you can learn many SAS tricks from their long professional experience.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To get a taste of their writing style (and, above all, of the hash object) you could read their&amp;nbsp;2017&amp;nbsp;paper &lt;A href="http://support.sas.com/resources/papers/proceedings17/0821-2017.pdf" target="_blank"&gt;Beyond Table Lookup: The Versatile SAS® Hash Object&lt;/A&gt;, which is closely related to their book.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When I started learning hash object programming there was only Michele M. Burlew's book &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;A href="https://www.sas.com/store/books/categories/usage-and-reference/sas-hash-object-programming-made-easy/prodBK_62230_en.html" target="_blank" rel="nofollow noopener noreferrer"&gt;SAS® Hash Object Programming Made Easy&lt;/A&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;. In October 2016 I wrote a customer review (titled "Valuable resource for intermediate and advanced SAS programmers") about it on a very well known online bookseller's website.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As the hash object has become one of my must-have tools, I've recently purchased the PDF version of the Dorfman/Henderson book (as a sort of "next-level sequel").&lt;/P&gt;</description>
      <pubDate>Wed, 22 Aug 2018 16:11:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duduplication-accross-rows/m-p/488959#M287384</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2018-08-22T16:11:51Z</dc:date>
    </item>
  </channel>
</rss>

