<?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: Convert to wide format in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/482535#M286874</link>
    <description>&lt;P&gt;use proc transpose&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 30 Jul 2018 16:45:54 GMT</pubDate>
    <dc:creator>VDD</dc:creator>
    <dc:date>2018-07-30T16:45:54Z</dc:date>
    <item>
      <title>Convert to wide format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/482532#M286872</link>
      <description>&lt;P&gt;I have a dataset in the&amp;nbsp;following format:&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;Counts&lt;/TD&gt;&lt;TD&gt;State&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2997&lt;/TD&gt;&lt;TD&gt;18&lt;/TD&gt;&lt;TD&gt;FL&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2997&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2997&lt;/TD&gt;&lt;TD&gt;31&lt;/TD&gt;&lt;TD&gt;NM&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2997&lt;/TD&gt;&lt;TD&gt;17&lt;/TD&gt;&lt;TD&gt;NY&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2997&lt;/TD&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;TD&gt;GA&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2998&lt;/TD&gt;&lt;TD&gt;32&lt;/TD&gt;&lt;TD&gt;FL&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2998&lt;/TD&gt;&lt;TD&gt;48&lt;/TD&gt;&lt;TD&gt;NY&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2998&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;TD&gt;CA&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2998&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;GA&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2998&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;NM&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2999&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;FL&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2999&lt;/TD&gt;&lt;TD&gt;42&lt;/TD&gt;&lt;TD&gt;CA&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2999&lt;/TD&gt;&lt;TD&gt;67&lt;/TD&gt;&lt;TD&gt;GA&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2999&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;TD&gt;NM&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2999&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How do I manipulate it using &lt;STRONG&gt;proc&lt;/STRONG&gt; &lt;STRONG&gt;SQL&amp;nbsp;&lt;/STRONG&gt;(etc.) if I want it like this?&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;FL&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;NM&lt;/TD&gt;&lt;TD&gt;NY&lt;/TD&gt;&lt;TD&gt;GA&lt;/TD&gt;&lt;TD&gt;NY&lt;/TD&gt;&lt;TD&gt;CA&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2997&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;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&gt;2998&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;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&gt;2999&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;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;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you all in advance.&lt;/P&gt;</description>
      <pubDate>Mon, 30 Jul 2018 16:43:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/482532#M286872</guid>
      <dc:creator>vdfdd</dc:creator>
      <dc:date>2018-07-30T16:43:30Z</dc:date>
    </item>
    <item>
      <title>Re: Convert to wide format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/482534#M286873</link>
      <description>&lt;P&gt;proc transpose&lt;/P&gt;
&lt;P&gt;by id&amp;nbsp;&lt;/P&gt;
&lt;P&gt;var counts&lt;/P&gt;
&lt;P&gt;id state&lt;/P&gt;</description>
      <pubDate>Mon, 30 Jul 2018 16:45:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/482534#M286873</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-07-30T16:45:27Z</dc:date>
    </item>
    <item>
      <title>Re: Convert to wide format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/482535#M286874</link>
      <description>&lt;P&gt;use proc transpose&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 30 Jul 2018 16:45:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/482535#M286874</guid>
      <dc:creator>VDD</dc:creator>
      <dc:date>2018-07-30T16:45:54Z</dc:date>
    </item>
    <item>
      <title>Re: Convert to wide format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/482536#M286875</link>
      <description>&lt;P&gt;Don't do it with PROC SQL. Use PROC TRANSPOSE.&lt;/P&gt;</description>
      <pubDate>Mon, 30 Jul 2018 16:46:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/482536#M286875</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2018-07-30T16:46:22Z</dc:date>
    </item>
    <item>
      <title>Re: Convert to wide format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/482537#M286876</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID	Counts	State $;
cards;
2997	18	FL
2997	4	TX
2997	31	NM
2997	17	NY
2997	11	GA
2998	32	FL
2998	48	NY
2998	36	CA
2998	4	GA
2998	4	NM
2999	12	FL
2999	42	CA
2999	67	GA
2999	23	NM
2999	9	TX
;

proc transpose data=have out=want;
by id;
id state;
var counts;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 30 Jul 2018 16:46:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/482537#M286876</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-07-30T16:46:47Z</dc:date>
    </item>
    <item>
      <title>Re: Convert to wide format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/482539#M286877</link>
      <description>&lt;P&gt;I think most users in here think you should use Proc Transpose &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But why on earth would you want to use Proc SQL anyway?&lt;/P&gt;</description>
      <pubDate>Mon, 30 Jul 2018 16:48:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/482539#M286877</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2018-07-30T16:48:50Z</dc:date>
    </item>
    <item>
      <title>Re: Convert to wide format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/482545#M286878</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
select distinct state into :state separated by ' '
from have;
quit;

%put &amp;amp;state;


data want1;
do _n_=1 by 1 until(last.id);
set have;
by id;
array st &amp;amp;state;
if _n_=1 then call missing(of st(*));
do _i_=1 to dim(st);
if vname(st(_i_))=state then st(_i_)=counts;
end;
end;
run;


&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 30 Jul 2018 17:06:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/482545#M286878</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-07-30T17:06:51Z</dc:date>
    </item>
    <item>
      <title>Re: Convert to wide format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/482553#M286879</link>
      <description>&lt;P&gt;As everyone suggested, this is&amp;nbsp;easy and clean&amp;nbsp;using PROC transpose. But if you want to do in PROC sql. you can do it if you have one distinct state per id by lot of hard coding as shown below&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table want as 
select id,
       max( case when state = "FL" then counts else 0 end) as FL,
	   max( case when state = "TX" then counts else 0 end) as TX,
	   max( case when state = "NM" then counts else 0 end) as NM,
	   max( case when state = "NY" then counts else 0 end) as NY,
	   max( case when state = "GA" then counts else 0 end) as GA,
	     max( case when state = "CA" then counts else 0 end) as CA
from have
group by 1;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 30 Jul 2018 17:53:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/482553#M286879</guid>
      <dc:creator>kiranv_</dc:creator>
      <dc:date>2018-07-30T17:53:16Z</dc:date>
    </item>
    <item>
      <title>Re: Convert to wide format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/483577#M286880</link>
      <description>&lt;P&gt;Thank you for all your quick and helpful responses. The proc transpose threw up some error messages&amp;nbsp;saying '&amp;nbsp;The ID value "FL" occurs twice in the same BY group'.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The PROC SQL worked fine for this purpose. I didn't try the second suggested SQL procedure since the first worked for my data.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
select distinct state into :state separated by ' '
from have;
quit;

%put &amp;amp;state;

data want1;
do _n_=1 by 1 until(last.id);
set have;
by id;
array st &amp;amp;state;
if _n_=1 then call missing(of st(*));
do _i_=1 to dim(st);
if vname(st(_i_))=state then st(_i_)=counts;
end;
end;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;I appreciate your efforts. Thank you all once again.&lt;/P&gt;</description>
      <pubDate>Thu, 02 Aug 2018 20:17:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/483577#M286880</guid>
      <dc:creator>vdfdd</dc:creator>
      <dc:date>2018-08-02T20:17:32Z</dc:date>
    </item>
    <item>
      <title>Re: Convert to wide format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/483587#M286881</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/197906"&gt;@vdfdd&lt;/a&gt;: Check your input dataset! Sounds like you have multiple records for one or more IDs for at least one of your by groups.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Either that's in error, or you have to sum the same-state records before transposing the dataset.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Art, CEO, AnalystFinder.com&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 02 Aug 2018 20:41:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/483587#M286881</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2018-08-02T20:41:28Z</dc:date>
    </item>
    <item>
      <title>Re: Convert to wide format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/483676#M286882</link>
      <description>&lt;P&gt;This error message from proc transpose also means that your results from the other approaches will not be correct, as values will be overwritten and lost. Another reason why proc transpose is THE tool for this, as it will alert you.&lt;/P&gt;</description>
      <pubDate>Fri, 03 Aug 2018 05:32:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/483676#M286882</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-08-03T05:32:01Z</dc:date>
    </item>
    <item>
      <title>Re: Convert to wide format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/484358#M286883</link>
      <description>&lt;P&gt;&amp;nbsp;When I added the &lt;FONT color="#000080"&gt;Let&lt;/FONT&gt; option to the proc transpose, I got the following:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#008000"&gt;WARNING: 4 observations omitted due to missing ID values.&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000FF"&gt;NOTE: There were 99187 observations read from the data set WORK.&lt;/FONT&gt;CLEANY&lt;FONT color="#0000FF"&gt;.&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000FF"&gt;NOTE: The data set WORK.WANTY has 26568 observations and 38 variables.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The same number of observations as the proc sql. Any thought on this?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 06 Aug 2018 13:31:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/484358#M286883</guid>
      <dc:creator>vdfdd</dc:creator>
      <dc:date>2018-08-06T13:31:50Z</dc:date>
    </item>
    <item>
      <title>Re: Convert to wide format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/484362#M286884</link>
      <description>&lt;P&gt;So you have missing ID values. Decide how you want to treat those.&lt;/P&gt;</description>
      <pubDate>Mon, 06 Aug 2018 13:43:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Convert-to-wide-format/m-p/484362#M286884</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-08-06T13:43:20Z</dc:date>
    </item>
  </channel>
</rss>

