<?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: Collapsing and concatenating rows in data set in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Collapsing-and-concatenating-rows-in-data-set/m-p/234010#M268162</link>
    <description>&lt;P&gt;FreelanceReinhard,&lt;/P&gt;
&lt;P&gt;You are correct. &amp;nbsp;I accidentally left out the length statement&amp;nbsp;for&amp;nbsp;AllDepts when I copied my code. &amp;nbsp;It was actually in my program though so I didn't get an error. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;This works perfectly! &amp;nbsp;Thank you so much for your help.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;KelseyB&lt;/P&gt;</description>
    <pubDate>Tue, 10 Nov 2015 14:21:56 GMT</pubDate>
    <dc:creator>KelseyB</dc:creator>
    <dc:date>2015-11-10T14:21:56Z</dc:date>
    <item>
      <title>Collapsing and concatenating rows in data set</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Collapsing-and-concatenating-rows-in-data-set/m-p/233925#M268158</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hello!&lt;/P&gt;
&lt;P&gt;I am hoping someone can help me. &amp;nbsp;I have the following data set below (this is just a sample of the dataset) and need the second dataset shown below. &amp;nbsp;Note that Count can range from 1 to 6 in my dataset. &amp;nbsp;Essentially if I&amp;nbsp;capture the rows where count is the maximum for each value of ID, I will have what I need. &amp;nbsp;Any ideas on how to do that?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My SAS code:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data output;&lt;BR /&gt;set input;&lt;BR /&gt;if count ne 1 then AllDepts=catx(",",AllDepts,Dept); &lt;BR /&gt;else AllDepts=Dept;&lt;BR /&gt;retain AllDepts;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="389"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD colspan="2" width="128"&gt;Dataset I have:&lt;/TD&gt;
&lt;TD width="64"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="197"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Count&lt;/TD&gt;
&lt;TD&gt;ID&lt;/TD&gt;
&lt;TD&gt;Name&lt;/TD&gt;
&lt;TD&gt;Dept&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;123&lt;/TD&gt;
&lt;TD&gt;Person 1&lt;/TD&gt;
&lt;TD&gt;Dept A&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;123&lt;/TD&gt;
&lt;TD&gt;Person 1&lt;/TD&gt;
&lt;TD&gt;Dept C&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;123&lt;/TD&gt;
&lt;TD&gt;Person 1&lt;/TD&gt;
&lt;TD&gt;Dept E&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;456&lt;/TD&gt;
&lt;TD&gt;Person 2&lt;/TD&gt;
&lt;TD&gt;Dept B&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;456&lt;/TD&gt;
&lt;TD&gt;Person 2&lt;/TD&gt;
&lt;TD&gt;Dept C&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;456&lt;/TD&gt;
&lt;TD&gt;Person 2&lt;/TD&gt;
&lt;TD&gt;Dept F&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;456&lt;/TD&gt;
&lt;TD&gt;Person 2&lt;/TD&gt;
&lt;TD&gt;Dept Q&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;567&lt;/TD&gt;
&lt;TD&gt;Person 3&lt;/TD&gt;
&lt;TD&gt;Dept B&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD colspan="2"&gt;Dataset I need:&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Count&lt;/TD&gt;
&lt;TD&gt;ID&lt;/TD&gt;
&lt;TD&gt;Name&lt;/TD&gt;
&lt;TD&gt;AllDepts&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;123&lt;/TD&gt;
&lt;TD&gt;Person 1&lt;/TD&gt;
&lt;TD&gt;Dept A, Dept C, Dept E&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;456&lt;/TD&gt;
&lt;TD&gt;Person 2&lt;/TD&gt;
&lt;TD&gt;Dept B, Dept C, Dept F, Dept Q&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;567&lt;/TD&gt;
&lt;TD&gt;Person 3&lt;/TD&gt;
&lt;TD&gt;Dept B&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD colspan="3"&gt;Dataset I am getting:&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Count&lt;/TD&gt;
&lt;TD&gt;ID&lt;/TD&gt;
&lt;TD&gt;Name&lt;/TD&gt;
&lt;TD&gt;AllDepts&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;123&lt;/TD&gt;
&lt;TD&gt;Person 1&lt;/TD&gt;
&lt;TD&gt;Dept A&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;123&lt;/TD&gt;
&lt;TD&gt;Person 1&lt;/TD&gt;
&lt;TD&gt;Dept A, Dept C&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;123&lt;/TD&gt;
&lt;TD&gt;Person 1&lt;/TD&gt;
&lt;TD&gt;Dept A, Dept C, Dept E&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;456&lt;/TD&gt;
&lt;TD&gt;Person 2&lt;/TD&gt;
&lt;TD&gt;Dept B&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;456&lt;/TD&gt;
&lt;TD&gt;Person 2&lt;/TD&gt;
&lt;TD&gt;Dept B, Dept C&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;456&lt;/TD&gt;
&lt;TD&gt;Person 2&lt;/TD&gt;
&lt;TD&gt;Dept B, Dept C, Dept F&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;456&lt;/TD&gt;
&lt;TD&gt;Person 2&lt;/TD&gt;
&lt;TD&gt;Dept B, Dept C, Dept F, Dept Q&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;567&lt;/TD&gt;
&lt;TD&gt;Person 3&lt;/TD&gt;
&lt;TD&gt;Dept B&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;KelseyB&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 09 Nov 2015 22:32:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Collapsing-and-concatenating-rows-in-data-set/m-p/233925#M268158</guid>
      <dc:creator>KelseyB</dc:creator>
      <dc:date>2015-11-09T22:32:41Z</dc:date>
    </item>
    <item>
      <title>Re: Collapsing and concatenating rows in data set</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Collapsing-and-concatenating-rows-in-data-set/m-p/233927#M268159</link>
      <description>&lt;P&gt;Use BY group processing.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=input;
by ID count;
run;

data output;
set input;
BY ID;

retain AllDepts;
if not first.ID then AllDepts=catx(",",AllDepts,Dept); 
else AllDepts=Dept;

if last.ID then output;

run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 09 Nov 2015 22:38:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Collapsing-and-concatenating-rows-in-data-set/m-p/233927#M268159</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2015-11-09T22:38:01Z</dc:date>
    </item>
    <item>
      <title>Re: Collapsing and concatenating rows in data set</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Collapsing-and-concatenating-rows-in-data-set/m-p/233943#M268160</link>
      <description>&lt;P&gt;Isn't it necessary to declare AllDepts as a character variable (assuming that it is not contained in the input dataset)? If I run either of your data steps, my SAS complains about "invalid numeric data" and makes AllDepts a numeric variable.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My solution would be:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=input;
by ID count;
run;

data output;
do until(last.ID);
  set input;
  length AllDepts $46; /* to be adapted depending on max. length of Dept */
  by ID;
  AllDepts=catx(', ', AllDepts, Dept);
end;
drop Dept;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This applies&amp;nbsp;the "DOW loop" technique (cf.&amp;nbsp;&lt;A href="http://www2.sas.com/proceedings/sugi28/099-28.pdf" target="_blank"&gt;http://www2.sas.com/proceedings/sugi28/099-28.pdf&lt;/A&gt;). The purpose of the unusual position of the (declarative) LENGTH statement is just to obtain the desired&amp;nbsp;column order.&lt;/P&gt;</description>
      <pubDate>Mon, 09 Nov 2015 23:50:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Collapsing-and-concatenating-rows-in-data-set/m-p/233943#M268160</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2015-11-09T23:50:00Z</dc:date>
    </item>
    <item>
      <title>Re: Collapsing and concatenating rows in data set</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Collapsing-and-concatenating-rows-in-data-set/m-p/233991#M268161</link>
      <description>&lt;P&gt;Something like below should do:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  infile datalines dlm=',' dsd truncover;
  input (Count ID Name Dept) ($);
  datalines;
1,123,Person 1,Dept A
2,123,Person 1,Dept C
3,123,Person 1,Dept E
1,456,Person 2,Dept B
2,456,Person 2,Dept C
3,456,Person 2,Dept F
4,456,Person 2,Dept Q
1,567,Person 3,Dept B
;
run;

data want(keep=Count ID Name AllDepts);
  set have;
  by id count;
  length AllDepts $100;
  retain AllDepts;
  AllDepts=catx(', ',AllDepts,Dept);
  if last.id then
    do;
      output;
      call missing(AllDepts);
    end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 10 Nov 2015 11:59:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Collapsing-and-concatenating-rows-in-data-set/m-p/233991#M268161</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2015-11-10T11:59:51Z</dc:date>
    </item>
    <item>
      <title>Re: Collapsing and concatenating rows in data set</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Collapsing-and-concatenating-rows-in-data-set/m-p/234010#M268162</link>
      <description>&lt;P&gt;FreelanceReinhard,&lt;/P&gt;
&lt;P&gt;You are correct. &amp;nbsp;I accidentally left out the length statement&amp;nbsp;for&amp;nbsp;AllDepts when I copied my code. &amp;nbsp;It was actually in my program though so I didn't get an error. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;This works perfectly! &amp;nbsp;Thank you so much for your help.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;KelseyB&lt;/P&gt;</description>
      <pubDate>Tue, 10 Nov 2015 14:21:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Collapsing-and-concatenating-rows-in-data-set/m-p/234010#M268162</guid>
      <dc:creator>KelseyB</dc:creator>
      <dc:date>2015-11-10T14:21:56Z</dc:date>
    </item>
    <item>
      <title>Re: Collapsing and concatenating rows in data set</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Collapsing-and-concatenating-rows-in-data-set/m-p/234012#M268163</link>
      <description>&lt;P&gt;Reeza,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you for your help with this. &amp;nbsp;Unfortunately, I got an empty dataset when I ran this. &amp;nbsp;It may have been something I did because I dummied my variables to send in the code, however. &amp;nbsp;I got a solution from another contributor, but I appreciate your quick response.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks again,&lt;/P&gt;
&lt;P&gt;KelseyB&lt;/P&gt;</description>
      <pubDate>Tue, 10 Nov 2015 14:24:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Collapsing-and-concatenating-rows-in-data-set/m-p/234012#M268163</guid>
      <dc:creator>KelseyB</dc:creator>
      <dc:date>2015-11-10T14:24:15Z</dc:date>
    </item>
    <item>
      <title>Re: Collapsing and concatenating rows in data set</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Collapsing-and-concatenating-rows-in-data-set/m-p/234013#M268164</link>
      <description>&lt;P&gt;Thanks Patrick. &amp;nbsp;This works perfectly. &amp;nbsp;I had already accepted another respondents' answer, but I greatly appreciate this. &amp;nbsp;Two ways to do something is better than none:)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best Regards,&lt;/P&gt;
&lt;P&gt;KelseyB&lt;/P&gt;</description>
      <pubDate>Tue, 10 Nov 2015 14:26:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Collapsing-and-concatenating-rows-in-data-set/m-p/234013#M268164</guid>
      <dc:creator>KelseyB</dc:creator>
      <dc:date>2015-11-10T14:26:04Z</dc:date>
    </item>
  </channel>
</rss>

