<?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 variables in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/transposing-variables/m-p/793970#M254535</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input NO DATE_EFFCT :yymmdd. CLASS $ PLAN KEY $;
  format date_effct yymmdd10.;
cards;
1 20210817 ARP 1 XXX001
2 20210817 ARP 1 XXX001
1 20201012 SSP 2 XXX002
2 20201013 SSP 2 XXX002
;

proc sql noprint;
select distinct catt('have(where=(no_',no,'=',no,') rename=
(no=no_',no,' class=class_',no,' plan=plan_',no,'))') into : merge separated by ' '
 from have;
quit;

data want;
if 0 then set have(keep=key date_effct);
 merge &amp;amp;merge.;
 by key date_effct;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 02 Feb 2022 07:04:35 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2022-02-02T07:04:35Z</dc:date>
    <item>
      <title>transposing variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transposing-variables/m-p/793939#M254529</link>
      <description>&lt;P&gt;Hi ,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How to transpose below data set&amp;nbsp; to the desired data set.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;actual data set:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;NO&lt;/TD&gt;&lt;TD&gt;DATE_EFFCT&lt;/TD&gt;&lt;TD&gt;CLASS&lt;/TD&gt;&lt;TD&gt;PLAN&lt;/TD&gt;&lt;TD&gt;KEY&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;20210817&lt;/TD&gt;&lt;TD&gt;ARP&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;XXX001&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;20210817&lt;/TD&gt;&lt;TD&gt;ARP&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;XXX001&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;20201012&lt;/TD&gt;&lt;TD&gt;SSP&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;XXX002&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;20201013&lt;/TD&gt;&lt;TD&gt;SSP&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;XXX002&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;desired data set:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;KEY&lt;/TD&gt;&lt;TD&gt;DATE_EFFCT&lt;/TD&gt;&lt;TD&gt;NO_1&lt;/TD&gt;&lt;TD&gt;CLASS_1&lt;/TD&gt;&lt;TD&gt;PLAN_1&lt;/TD&gt;&lt;TD&gt;NO_2&lt;/TD&gt;&lt;TD&gt;CLASS_2&lt;/TD&gt;&lt;TD&gt;PLAN_2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;XXX001&lt;/TD&gt;&lt;TD&gt;20210817&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;ARP&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;ARP&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;XXX002&lt;/TD&gt;&lt;TD&gt;20201012&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;SSP&lt;/TD&gt;&lt;TD&gt;2&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;XXX002&lt;/TD&gt;&lt;TD&gt;20201013&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;2&lt;/TD&gt;&lt;TD&gt;SSP&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;and if there are 3 Nos then&amp;nbsp; NO_3 CLASS_3 PLAN_3&amp;nbsp; should automatically be created.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The group&amp;nbsp; variables should be&amp;nbsp; KEY&amp;nbsp; and DATE_EFFCT.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Request help on this.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Swathi&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 02 Feb 2022 02:37:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transposing-variables/m-p/793939#M254529</guid>
      <dc:creator>swathi5</dc:creator>
      <dc:date>2022-02-02T02:37:23Z</dc:date>
    </item>
    <item>
      <title>Re: transposing variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transposing-variables/m-p/793959#M254533</link>
      <description>&lt;P&gt;The easiest way is to use PROC SUMMARY.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input NO DATE_EFFCT :yymmdd. CLASS $ PLAN KEY $;
  format date_effct yymmdd10.;
cards;
1 20210817 ARP 1 XXX001
2 20210817 ARP 1 XXX001
1 20201012 SSP 2 XXX002
2 20201013 SSP 2 XXX002
;

proc summary data=have;
  by key date_effct ;
  output out=want(drop=_type_ _freq_) idgroup(out[3] (no class plan)=);
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If the data isn't pre-sorted then use CLASS statement (but depending on how many groups you have might require too much memory).&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc summary data=have nway;
  class key date_effct / missing;
  output out=want(drop=_type_ _freq_) idgroup(out[3] (no class plan)=);
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;But you do need to know what number to put into the square brackets after the OUT keyword in the IDGROUP() block.&amp;nbsp; If you put something too small then the extra sets of vlaues will not be included.&lt;/P&gt;
&lt;P&gt;To make it dynamic you could use an SQL query to find the maximum per by group (class).&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
select max(count) into :ngroups trimmed
from (select key,date_effct,count(*) as count from have group by key,date_effct)
;
quit;

proc summary data=have nway;
  class key date_effct / missing ;
  output out=want(drop=_type_ _freq_) idgroup(out[&amp;amp;ngroups] (no class plan)=);
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Results:&lt;/P&gt;
&lt;PRE&gt;Obs     KEY      DATE_EFFCT    NO_1    NO_2    CLASS_1    CLASS_2    PLAN_1    PLAN_2

 1     XXX001    2021-08-17      1       2       ARP        ARP         1         1
 2     XXX002    2020-10-12      1       .       SSP                    2         .
 3     XXX002    2020-10-13      2       .       SSP                    2         .

&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;NOTE: I cannot figure out why you have the values for that third observations under the second block of variables instead of the first.&amp;nbsp; Is that just a mistake?&amp;nbsp; If it is on purpose then you need to explain what logic made you decide to put it into the second block instead of the first.&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 02 Feb 2022 04:04:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transposing-variables/m-p/793959#M254533</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2022-02-02T04:04:16Z</dc:date>
    </item>
    <item>
      <title>Re: transposing variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transposing-variables/m-p/793970#M254535</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input NO DATE_EFFCT :yymmdd. CLASS $ PLAN KEY $;
  format date_effct yymmdd10.;
cards;
1 20210817 ARP 1 XXX001
2 20210817 ARP 1 XXX001
1 20201012 SSP 2 XXX002
2 20201013 SSP 2 XXX002
;

proc sql noprint;
select distinct catt('have(where=(no_',no,'=',no,') rename=
(no=no_',no,' class=class_',no,' plan=plan_',no,'))') into : merge separated by ' '
 from have;
quit;

data want;
if 0 then set have(keep=key date_effct);
 merge &amp;amp;merge.;
 by key date_effct;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 02 Feb 2022 07:04:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transposing-variables/m-p/793970#M254535</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2022-02-02T07:04:35Z</dc:date>
    </item>
  </channel>
</rss>

