<?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 Transposing a dataset in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Transposing-a-dataset/m-p/58768#M16519</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;OK. It is an example.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;data have;
&amp;nbsp; informat id $3.;
&amp;nbsp; informat visit_date mmddyy10.;
&amp;nbsp; format visit_date mmddyy10.;
&amp;nbsp; input id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; visit_date dose location $;
&amp;nbsp; cards;
001&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2011&amp;nbsp; 12 q
001&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/20/2011 2 s
001&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4/15/2011 3 e
002&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8/1/2011 3 e
002&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9/2/2011 4 r
003&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/23/2011 4 rt
003&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2/2/2011&amp;nbsp; 23 t
003&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2/15/2011 32 w
003&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/8/2011&amp;nbsp; 43&amp;nbsp; e
003&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/15/2011 24 ew
003&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/28/2011 4 w
003&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/29/2011 4 q
;
run;
proc sql noprint;
 select max(count) into : max 
&amp;nbsp; from (select count(*) as count from have group by id);
quit;
%let max=%trim(%left(&amp;amp;max));
data want(keep=id visit_date_: dose_: location_:);
 set have;
 by id;
 array v{*} visit_date_1-visit_date_&amp;amp;max;
 array d{*} dose_1-dose_&amp;amp;max;
 array l{*} $ location_1-location_&amp;amp;max;
 retain&amp;nbsp; visit_date_: dose_: location_:;
 if first.id then count=0;
 count+1;
 v{count}=visit_date;
 d{count}=dose;
 l{count}=location;
 if last.id then do;output; call missing(of v{*} d{*} l{*});end;
 format&amp;nbsp; visit_date_: mmddyy10.;
run;


&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 02 Dec 2011 09:28:28 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2011-12-02T09:28:28Z</dc:date>
    <item>
      <title>Transposing a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Transposing-a-dataset/m-p/58767#M16518</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is my source data set&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" frame="void" rules="none"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD align="left" height="17" width="67"&gt;id&lt;/TD&gt;&lt;TD align="left" width="67"&gt;visit_date&lt;/TD&gt;&lt;TD align="left" width="67"&gt;dose&lt;/TD&gt;&lt;TD align="left" width="67"&gt;location&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" height="17"&gt;001&lt;/TD&gt;&lt;TD align="right"&gt;1/1/2011&lt;/TD&gt;&lt;TD align="right"&gt;12&lt;/TD&gt;&lt;TD align="left"&gt;q&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" height="17"&gt;001&lt;/TD&gt;&lt;TD align="right"&gt;3/20/2011&lt;/TD&gt;&lt;TD align="right"&gt;2&lt;/TD&gt;&lt;TD align="left"&gt;s&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" height="17"&gt;001&lt;/TD&gt;&lt;TD align="right"&gt;4/15/2011&lt;/TD&gt;&lt;TD align="right"&gt;3&lt;/TD&gt;&lt;TD align="left"&gt;e&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" height="17"&gt;002&lt;/TD&gt;&lt;TD align="right"&gt;8/1/2011&lt;/TD&gt;&lt;TD align="right"&gt;3&lt;/TD&gt;&lt;TD align="left"&gt;e&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" height="17"&gt;002&lt;/TD&gt;&lt;TD align="right"&gt;9/2/2011&lt;/TD&gt;&lt;TD align="right"&gt;4&lt;/TD&gt;&lt;TD align="left"&gt;r&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" height="17"&gt;003&lt;/TD&gt;&lt;TD align="right"&gt;1/23/2011&lt;/TD&gt;&lt;TD align="right"&gt;4&lt;/TD&gt;&lt;TD align="left"&gt;rt&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" height="17"&gt;003&lt;/TD&gt;&lt;TD align="right"&gt;2/2/2011&lt;/TD&gt;&lt;TD align="right"&gt;23&lt;/TD&gt;&lt;TD align="left"&gt;t&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" height="17"&gt;003&lt;/TD&gt;&lt;TD align="right"&gt;2/15/2011&lt;/TD&gt;&lt;TD align="right"&gt;32&lt;/TD&gt;&lt;TD align="left"&gt;w&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" height="17"&gt;003&lt;/TD&gt;&lt;TD align="right"&gt;3/8/2011&lt;/TD&gt;&lt;TD align="right"&gt;43&lt;/TD&gt;&lt;TD align="left"&gt;e&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" height="17"&gt;003&lt;/TD&gt;&lt;TD align="right"&gt;3/15/2011&lt;/TD&gt;&lt;TD align="right"&gt;24&lt;/TD&gt;&lt;TD align="left"&gt;ew&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" height="17"&gt;003&lt;/TD&gt;&lt;TD align="right"&gt;3/28/2011&lt;/TD&gt;&lt;TD align="right"&gt;4&lt;/TD&gt;&lt;TD align="left"&gt;w&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" height="17"&gt;003&lt;/TD&gt;&lt;TD align="right"&gt;3/29/2011&lt;/TD&gt;&lt;TD align="right"&gt;4&lt;/TD&gt;&lt;TD align="left"&gt;q&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i want to transpose it as follows and where the missing values are there for columns loc1-loc7 i want to insert a value as NULL.&lt;/P&gt;&lt;P&gt;how can i do with transpose procedure. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" frame="void" rules="none"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD align="left" height="17" width="67"&gt;id&lt;/TD&gt;&lt;TD align="left" width="67"&gt;visit_date_1&lt;/TD&gt;&lt;TD align="left" width="67"&gt;visit_date_2&lt;/TD&gt;&lt;TD align="left" width="67"&gt;visit_date_3&lt;/TD&gt;&lt;TD align="left" width="67"&gt;visit_date_4&lt;/TD&gt;&lt;TD align="left" width="67"&gt;visit_date_5&lt;/TD&gt;&lt;TD align="left" width="67"&gt;visit_date_6&lt;/TD&gt;&lt;TD align="left" width="67"&gt;visit_date_7&lt;/TD&gt;&lt;TD align="left" width="67"&gt;dose_1&lt;/TD&gt;&lt;TD align="left" width="67"&gt;dose_2&lt;/TD&gt;&lt;TD align="left" width="67"&gt;dose_3&lt;/TD&gt;&lt;TD align="left" width="67"&gt;dose_4&lt;/TD&gt;&lt;TD align="left" width="67"&gt;dose_5&lt;/TD&gt;&lt;TD align="left" width="67"&gt;dose_6&lt;/TD&gt;&lt;TD align="left" width="67"&gt;dose_7&lt;/TD&gt;&lt;TD align="left" width="67"&gt;location_1&lt;/TD&gt;&lt;TD align="left" width="67"&gt;location_2&lt;/TD&gt;&lt;TD align="left" width="67"&gt;location_3&lt;/TD&gt;&lt;TD align="left" width="67"&gt;location_4&lt;/TD&gt;&lt;TD align="left" width="67"&gt;location_5&lt;/TD&gt;&lt;TD align="left" width="67"&gt;location_6&lt;/TD&gt;&lt;TD align="left" width="67"&gt;location_7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" height="17"&gt;001&lt;/TD&gt;&lt;TD align="right"&gt;1/1/2011&lt;/TD&gt;&lt;TD align="right"&gt;3/20/2011&lt;/TD&gt;&lt;TD align="right"&gt;4/15/2011&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="right"&gt;12&lt;/TD&gt;&lt;TD align="right"&gt;2&lt;/TD&gt;&lt;TD align="right"&gt;3&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;q&lt;/TD&gt;&lt;TD align="left"&gt;s&lt;/TD&gt;&lt;TD align="left"&gt;e&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" height="17"&gt;002&lt;/TD&gt;&lt;TD align="right"&gt;8/1/2011&lt;/TD&gt;&lt;TD align="right"&gt;9/2/2011&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="right"&gt;3&lt;/TD&gt;&lt;TD align="right"&gt;4&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;e&lt;/TD&gt;&lt;TD align="left"&gt;r&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;TD align="left"&gt;&lt;BR /&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" height="17"&gt;003&lt;/TD&gt;&lt;TD align="right"&gt;1/23/2011&lt;/TD&gt;&lt;TD align="right"&gt;2/2/2011&lt;/TD&gt;&lt;TD align="right"&gt;2/15/2011&lt;/TD&gt;&lt;TD align="right"&gt;3/8/2011&lt;/TD&gt;&lt;TD align="right"&gt;3/15/2011&lt;/TD&gt;&lt;TD align="right"&gt;3/28/2011&lt;/TD&gt;&lt;TD align="right"&gt;3/29/2011&lt;/TD&gt;&lt;TD align="right"&gt;4&lt;/TD&gt;&lt;TD align="right"&gt;23&lt;/TD&gt;&lt;TD align="right"&gt;32&lt;/TD&gt;&lt;TD align="right"&gt;43&lt;/TD&gt;&lt;TD align="right"&gt;24&lt;/TD&gt;&lt;TD align="right"&gt;4&lt;/TD&gt;&lt;TD align="right"&gt;4&lt;/TD&gt;&lt;TD align="left"&gt;rt&lt;/TD&gt;&lt;TD align="left"&gt;t&lt;/TD&gt;&lt;TD align="left"&gt;w&lt;/TD&gt;&lt;TD align="left"&gt;e&lt;/TD&gt;&lt;TD align="left"&gt;ew&lt;/TD&gt;&lt;TD align="left"&gt;w&lt;/TD&gt;&lt;TD align="left"&gt;q&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Dec 2011 07:31:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Transposing-a-dataset/m-p/58767#M16518</guid>
      <dc:creator>sss</dc:creator>
      <dc:date>2011-12-02T07:31:04Z</dc:date>
    </item>
    <item>
      <title>Transposing a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Transposing-a-dataset/m-p/58768#M16519</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;OK. It is an example.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;data have;
&amp;nbsp; informat id $3.;
&amp;nbsp; informat visit_date mmddyy10.;
&amp;nbsp; format visit_date mmddyy10.;
&amp;nbsp; input id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; visit_date dose location $;
&amp;nbsp; cards;
001&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2011&amp;nbsp; 12 q
001&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/20/2011 2 s
001&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4/15/2011 3 e
002&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8/1/2011 3 e
002&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9/2/2011 4 r
003&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/23/2011 4 rt
003&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2/2/2011&amp;nbsp; 23 t
003&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2/15/2011 32 w
003&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/8/2011&amp;nbsp; 43&amp;nbsp; e
003&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/15/2011 24 ew
003&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/28/2011 4 w
003&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/29/2011 4 q
;
run;
proc sql noprint;
 select max(count) into : max 
&amp;nbsp; from (select count(*) as count from have group by id);
quit;
%let max=%trim(%left(&amp;amp;max));
data want(keep=id visit_date_: dose_: location_:);
 set have;
 by id;
 array v{*} visit_date_1-visit_date_&amp;amp;max;
 array d{*} dose_1-dose_&amp;amp;max;
 array l{*} $ location_1-location_&amp;amp;max;
 retain&amp;nbsp; visit_date_: dose_: location_:;
 if first.id then count=0;
 count+1;
 v{count}=visit_date;
 d{count}=dose;
 l{count}=location;
 if last.id then do;output; call missing(of v{*} d{*} l{*});end;
 format&amp;nbsp; visit_date_: mmddyy10.;
run;


&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Dec 2011 09:28:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Transposing-a-dataset/m-p/58768#M16519</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2011-12-02T09:28:28Z</dc:date>
    </item>
    <item>
      <title>Transposing a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Transposing-a-dataset/m-p/58769#M16520</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey that was a helpful ans.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But i want to do with transpose procedure how can i do it. I tried this code&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc trans data=have out=trans;&lt;/P&gt;&lt;P&gt;by id;&lt;/P&gt;&lt;P&gt;var visit_date;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;but it is transposing with respect to one variable . if i am passsing more the one variable is var statement it is creating so many observation.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Dec 2011 10:26:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Transposing-a-dataset/m-p/58769#M16520</guid>
      <dc:creator>sss</dc:creator>
      <dc:date>2011-12-02T10:26:05Z</dc:date>
    </item>
    <item>
      <title>Transposing a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Transposing-a-dataset/m-p/58770#M16521</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt; from your last last post.can we use do loop insted of if statement?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Dec 2011 10:28:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Transposing-a-dataset/m-p/58770#M16521</guid>
      <dc:creator>sss</dc:creator>
      <dc:date>2011-12-02T10:28:08Z</dc:date>
    </item>
    <item>
      <title>Transposing a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Transposing-a-dataset/m-p/58771#M16522</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;What is your mean about do loop?&lt;/P&gt;&lt;P&gt;I think proc transpose cann't do it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But proc meas + idgroup can get it.&lt;/P&gt;&lt;P&gt;For more information ,refer to documention of proc means.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Dec 2011 13:09:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Transposing-a-dataset/m-p/58771#M16522</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2011-12-02T13:09:44Z</dc:date>
    </item>
    <item>
      <title>Transposing a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Transposing-a-dataset/m-p/58772#M16523</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There are ways to do it all with one proc transpose run, but I have always found them difficult to recall unless you do them frequently enough that it becomes almost a 2nd language.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In your case, the easiest way to remember (for me) is either using the proc summary approach, or doing three separate proc transpose runs and then combining the results in a datastep.&amp;nbsp; E.g.:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc transpose data=have out=temp1 prefix=visit_date;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by id;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var visit_date;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc transpose data=have out=temp2 prefix=dose;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by id;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var dose;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc transpose data=have out=temp3 prefix=location;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by id;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var location;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set temp1 (drop=_name_);&lt;/P&gt;&lt;P&gt;&amp;nbsp; set temp2 (drop=id _name_);&lt;/P&gt;&lt;P&gt;&amp;nbsp; set temp3 (drop=id _name_);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are many nice SUGI/SGF papers on the topic.&amp;nbsp; E.g.:&lt;A href="http://www2.sas.com/proceedings/forum2007/046-2007.pdf"&gt;http://www2.sas.com/proceedings/forum2007/046-2007.pdf&lt;/A&gt; &lt;A href="http://www2.sas.com/proceedings/forum2007/046-2007.pdf"&gt;http://www2.sas.com/proceedings/forum2007/046-2007.pdf&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Dec 2011 14:42:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Transposing-a-dataset/m-p/58772#M16523</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2011-12-02T14:42:39Z</dc:date>
    </item>
    <item>
      <title>Re: Transposing a dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Transposing-a-dataset/m-p/58773#M16524</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi ,,, using Ksharp's data and suggestion about PROC MEANS (or SUMMARY) and the IDGROUP option ...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;* find maximum group size;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;proc sql noprint;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;select max(obs) into :obs&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;from (select count(*) as obs from have group by id);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;quit;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;* transpose three variables at one time;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;proc summary nway data=have missing;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;class id;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;output out = want (drop=_:) idgroup(out[&amp;amp;obs](visit_date dose location)=);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-family: 'courier new', courier;"&gt;run&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;for more info, you can also look at .. "Transposing Data Using PROC SUMMARY'S IDGROUP Option"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/resources/papers/proceedings10/102-2010.pdf"&gt;http://support.sas.com/resources/papers/proceedings10/102-2010.pdf&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 03 Dec 2011 15:01:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Transposing-a-dataset/m-p/58773#M16524</guid>
      <dc:creator>MikeZdeb</dc:creator>
      <dc:date>2011-12-03T15:01:13Z</dc:date>
    </item>
  </channel>
</rss>

