<?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: transposing multi variables in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/transposing-multi-variables/m-p/772739#M245393</link>
    <description>&lt;PRE&gt;data have;
infile datalines dlm="09"x dsd;
input risk risk_class $ risk_plan $ key $;
datalines;
1	ART	1	A
1	ART	3	B
1	ART	5	C
2	SCH	5	C
1	SCH	1	D
1	ART	3	E
2	SCH	3	E
2	ART	1	F
;

proc sql noprint;
select max(n) into : n from (select key,count(*) as n from have group by key);
quit;
proc summary data=have;
by key;
output out=want idgroup(out[&amp;amp;n] (risk risk_class risk_plan)=);
run;
proc print;run;&lt;/PRE&gt;</description>
    <pubDate>Thu, 07 Oct 2021 14:06:52 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2021-10-07T14:06:52Z</dc:date>
    <item>
      <title>transposing multi variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transposing-multi-variables/m-p/772627#M245347</link>
      <description>&lt;P&gt;Hi ,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If I want to change the data set from A to B ,what is the way.&lt;/P&gt;
&lt;P&gt;Data set A&lt;/P&gt;
&lt;TABLE width="292"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;Risk&lt;/TD&gt;
&lt;TD width="81"&gt;Risk class&lt;/TD&gt;
&lt;TD width="83"&gt;Risk plan&amp;nbsp;&lt;/TD&gt;
&lt;TD width="64"&gt;Key&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;ART&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;ART&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;ART&lt;/TD&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;SCH&lt;/TD&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;SCH&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;ART&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;E&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;SCH&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;E&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;B&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="475"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;Key&lt;/TD&gt;
&lt;TD width="64"&gt;Risk1&lt;/TD&gt;
&lt;TD width="64"&gt;Risk2&lt;/TD&gt;
&lt;TD width="76"&gt;Risk class1&lt;/TD&gt;
&lt;TD width="75"&gt;Risk class2&lt;/TD&gt;
&lt;TD width="68"&gt;Risk plan1&lt;/TD&gt;
&lt;TD width="64"&gt;Risk Plan2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;ART&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;ART&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;ART&lt;/TD&gt;
&lt;TD&gt;SCH&lt;/TD&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;SCH&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;E&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;ART&lt;/TD&gt;
&lt;TD&gt;SCH&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;the key thing is here risk is not a constant for&amp;nbsp; a max of 2 for each key,it can have any number for each key ..&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;for ex: key A has&amp;nbsp; 1 risk value.&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;key B&amp;nbsp; has 1 risk value&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;key&amp;nbsp; C has 2 risk values&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;key&amp;nbsp; D has 1 risk value&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;key E has 2 risk values&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Key F can have 3 risk values.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I can do with arrays but I know if the risk value is max 2 or fixed&amp;nbsp; then it can be&amp;nbsp; done.but i am not sure how to achieve if the risk max number is not fixed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks in advance.&lt;/P&gt;</description>
      <pubDate>Thu, 07 Oct 2021 05:10:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transposing-multi-variables/m-p/772627#M245347</guid>
      <dc:creator>sfffdg</dc:creator>
      <dc:date>2021-10-07T05:10:10Z</dc:date>
    </item>
    <item>
      <title>Re: transposing multi variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transposing-multi-variables/m-p/772629#M245348</link>
      <description>&lt;P&gt;Calling proc transpose for each variable (risk, risk_class and risk_plan) and merging the results (all by key), seems to be an easy way to transform the dataset into a report-like structure.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc transpose data= have out=Risk(drop= _name_) prefix=Risk;
   by Key;
   var Risk;
run;

proc transpose data= have out=Risk_Class(drop= _name_) prefix=Risk_Class;
   by Key;
   var Risk_Class;
run;

proc transpose data= have out=Risk_Plan(drop= _name_) prefix=Risk_Plan;
   by Key;
   var Risk_Plan;
run;

data want;
   merge Risk Risk_Class Risk_Plan;
   by Key;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 07 Oct 2021 05:19:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transposing-multi-variables/m-p/772629#M245348</guid>
      <dc:creator>andreas_lds</dc:creator>
      <dc:date>2021-10-07T05:19:16Z</dc:date>
    </item>
    <item>
      <title>Re: transposing multi variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transposing-multi-variables/m-p/772640#M245357</link>
      <description>&lt;P&gt;Thanks a lot for the solution .&lt;BR /&gt;&lt;BR /&gt;I find it is working fine except for one scenario. ( For key 'F')&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="swathiprasad_2-1633592427643.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/64436i93D4F486BC91B0F4/image-size/medium?v=v2&amp;amp;px=400" role="button" title="swathiprasad_2-1633592427643.png" alt="swathiprasad_2-1633592427643.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;excepted result:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="swathiprasad_0-1633592271079.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/64434iB8DA682ED2EA27CD/image-size/medium?v=v2&amp;amp;px=400" role="button" title="swathiprasad_0-1633592271079.png" alt="swathiprasad_0-1633592271079.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;but actual result; &lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="swathiprasad_1-1633592368141.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/64435i22056A52D777F9A1/image-size/medium?v=v2&amp;amp;px=400" role="button" title="swathiprasad_1-1633592368141.png" alt="swathiprasad_1-1633592368141.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;how can we get rid of this problem?&lt;/P&gt;</description>
      <pubDate>Thu, 07 Oct 2021 07:40:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transposing-multi-variables/m-p/772640#M245357</guid>
      <dc:creator>sfffdg</dc:creator>
      <dc:date>2021-10-07T07:40:49Z</dc:date>
    </item>
    <item>
      <title>Re: transposing multi variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transposing-multi-variables/m-p/772647#M245358</link>
      <description>&lt;P&gt;Create a counter, and run a double PROC TRANSPOSE:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile datalines dlm="09"x dsd;
input risk risk_class $ risk_plan $ key $;
datalines;
1	ART	1	A
1	ART	3	B
1	ART	5	C
2	SCH	5	C
1	SCH	1	D
1	ART	3	E
2	SCH	3	E
2	ART	1	F
;

data pretrans;
set have;
by key;
if first.key
then ct = 1;
else ct + 1;
run;

proc transpose data=pretrans out=long;
by key ct;
var risk risk_class risk_plan;
run;

proc transpose data=long out=want (drop=_name_);
by key;
var col1;
id _name_ ct;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;You can also run PROC REPORT on pretrans:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc report data=pretrans;
column key ct,(risk risk_class risk_plan) n;
define key / group;
define ct / "" across;
define risk / display;
define risk_class / display;
define risk_plan / display;
define n / noprint;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 07 Oct 2021 09:19:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transposing-multi-variables/m-p/772647#M245358</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2021-10-07T09:19:56Z</dc:date>
    </item>
    <item>
      <title>Re: transposing multi variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transposing-multi-variables/m-p/772658#M245360</link>
      <description>&lt;P&gt;Thanks a lot for the solution Kurt.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But it also gives the same result as andreas_ids.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;actual result:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="swathiprasad_0-1633600700547.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/64442i654752C0C65AC6DD/image-size/medium?v=v2&amp;amp;px=400" role="button" title="swathiprasad_0-1633600700547.png" alt="swathiprasad_0-1633600700547.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;expected result is:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="swathiprasad_1-1633600747145.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/64443i70F44121AFA6145C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="swathiprasad_1-1633600747145.png" alt="swathiprasad_1-1633600747145.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 07 Oct 2021 09:59:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transposing-multi-variables/m-p/772658#M245360</guid>
      <dc:creator>sfffdg</dc:creator>
      <dc:date>2021-10-07T09:59:33Z</dc:date>
    </item>
    <item>
      <title>Re: transposing multi variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transposing-multi-variables/m-p/772671#M245365</link>
      <description>&lt;P&gt;Then you run the double transpose without the extra counter, but by using risk as ID variable:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile datalines dlm="09"x dsd;
input risk risk_class $ risk_plan $ key $;
datalines;
1	ART	1	A
1	ART	3	B
1	ART	5	C
2	SCH	5	C
1	SCH	1	D
1	ART	3	E
2	SCH	3	E
2	ART	1	F
;

proc transpose data=have out=long;
by key risk;
var risk risk_class risk_plan;
run;

proc transpose data=long out=want (drop=_name_);
by key;
var col1;
id _name_ risk;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 07 Oct 2021 10:41:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transposing-multi-variables/m-p/772671#M245365</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2021-10-07T10:41:39Z</dc:date>
    </item>
    <item>
      <title>Re: transposing multi variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transposing-multi-variables/m-p/772739#M245393</link>
      <description>&lt;PRE&gt;data have;
infile datalines dlm="09"x dsd;
input risk risk_class $ risk_plan $ key $;
datalines;
1	ART	1	A
1	ART	3	B
1	ART	5	C
2	SCH	5	C
1	SCH	1	D
1	ART	3	E
2	SCH	3	E
2	ART	1	F
;

proc sql noprint;
select max(n) into : n from (select key,count(*) as n from have group by key);
quit;
proc summary data=have;
by key;
output out=want idgroup(out[&amp;amp;n] (risk risk_class risk_plan)=);
run;
proc print;run;&lt;/PRE&gt;</description>
      <pubDate>Thu, 07 Oct 2021 14:06:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transposing-multi-variables/m-p/772739#M245393</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2021-10-07T14:06:52Z</dc:date>
    </item>
  </channel>
</rss>

