<?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: Constructing Tables in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Constructing-Tables/m-p/590727#M169116</link>
    <description>&lt;P&gt;Do you want a table or just a report ?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input
ID_B $        ID_S  $       VarA;
cards;
A               B              10
A               C              10
C               D              10
C               A              10
D               B              15
A               A                5
C               B              10
B               B              20
A               C              10
;
run;
proc summary data=have nway;
class id_b id_s;
var vara;
output out=temp sum=;
run;

options missing='0';
proc transpose data=temp out=table1(drop=_:);
by id_b;
id id_s;
var vara;
run;
data table2;
 set table1;
 array x{*} _numeric_;
 do _n_=1 to dim(x);
   x{_n_}=x{_n_}*.01;
 end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Sun, 22 Sep 2019 12:30:19 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2019-09-22T12:30:19Z</dc:date>
    <item>
      <title>Constructing Tables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Constructing-Tables/m-p/590642#M169090</link>
      <description>&lt;P&gt;Dear All&lt;/P&gt;&lt;P&gt;My Data is as follows&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID_B&lt;/TD&gt;&lt;TD&gt;ID_S&lt;/TD&gt;&lt;TD&gt;VarA&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;D&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;D&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;15&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;The total of VarA is 100&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to construct the following two tables&lt;BR /&gt;The first with the raw numbers&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;D&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;D&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;15&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And Then I want the Table in Percentages&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;D&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;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;0.05&lt;/TD&gt;&lt;TD&gt;0.1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0.2&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0.2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;0.1&lt;/TD&gt;&lt;TD&gt;0.1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0.1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;D&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0.15&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance&lt;/P&gt;&lt;P&gt;Randy&lt;/P&gt;</description>
      <pubDate>Sat, 21 Sep 2019 18:50:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Constructing-Tables/m-p/590642#M169090</guid>
      <dc:creator>RandyStan</dc:creator>
      <dc:date>2019-09-21T18:50:46Z</dc:date>
    </item>
    <item>
      <title>Re: Constructing Tables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Constructing-Tables/m-p/590645#M169093</link>
      <description>&lt;P&gt;Do you need data sets or displayed reports as your output?&lt;/P&gt;
&lt;P&gt;PROC FREQ will do this, have you tried that so far, and if so, post what code you did try and let us know what didn't work.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Are your percents, percent of total, row or column?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Can you provide your data set as data steps?&lt;/P&gt;
&lt;P&gt;Here are instructions on how to provide sample data as a data step:&lt;BR /&gt;&lt;A href="https://communities.sas.com/t5/SAS-Communities-Library/How-to-create-a-data-step-version-of-your-data-AKA-generate/ta-p/258712" target="_blank" rel="noopener"&gt;https://communities.sas.com/t5/SAS-Communities-Library/How-to-create-a-data-step-version-of-your-data-AKA-generate/ta-p/258712&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/133090"&gt;@RandyStan&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Dear All&lt;/P&gt;
&lt;P&gt;My Data is as follows&lt;/P&gt;
&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;ID_B&lt;/TD&gt;
&lt;TD&gt;ID_S&lt;/TD&gt;
&lt;TD&gt;VarA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;15&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;The total of VarA is 100&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I want to construct the following two tables&lt;BR /&gt;The first with the raw numbers&lt;/P&gt;
&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;TD&gt;20&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;20&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;15&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And Then I want the Table in Percentages&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;D&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;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;0.05&lt;/TD&gt;
&lt;TD&gt;0.1&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;0.2&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;0.2&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;0.1&lt;/TD&gt;
&lt;TD&gt;0.1&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;0.1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;0.15&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks in advance&lt;/P&gt;
&lt;P&gt;Randy&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 21 Sep 2019 19:01:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Constructing-Tables/m-p/590645#M169093</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2019-09-21T19:01:59Z</dc:date>
    </item>
    <item>
      <title>Re: Constructing Tables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Constructing-Tables/m-p/590649#M169096</link>
      <description>&lt;P&gt;As I wrote ons SAS-L, try this one:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;ods html;
data have;
input
ID_B $        ID_S  $       VarA;
cards;
A               B              10
A               C              10
C               D              10
C               A              10
D               B              15
A               A                5
C               B              10
B               B              20
A               C              10
;
run;
proc print;
run;

proc format;
value blankaszero
. = 0
other = [best32.]
;

picture pctfmt
. = "0" (noedit)
low-high='9.99' (multipl=1)
;
run;


proc tabulate data = have ;
class id_:;
var varA;
table id_B=" ", id_s=" "*varA=" "*sum=" "*f=blankaszero. ;

table id_B=" ", id_s=" "*varA=" "*reppctsum=" "*f=pctfmt12.;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;All the best&lt;/P&gt;&lt;P&gt;Bart&lt;/P&gt;</description>
      <pubDate>Sat, 21 Sep 2019 19:46:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Constructing-Tables/m-p/590649#M169096</guid>
      <dc:creator>yabwon</dc:creator>
      <dc:date>2019-09-21T19:46:30Z</dc:date>
    </item>
    <item>
      <title>Re: Constructing Tables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Constructing-Tables/m-p/590727#M169116</link>
      <description>&lt;P&gt;Do you want a table or just a report ?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input
ID_B $        ID_S  $       VarA;
cards;
A               B              10
A               C              10
C               D              10
C               A              10
D               B              15
A               A                5
C               B              10
B               B              20
A               C              10
;
run;
proc summary data=have nway;
class id_b id_s;
var vara;
output out=temp sum=;
run;

options missing='0';
proc transpose data=temp out=table1(drop=_:);
by id_b;
id id_s;
var vara;
run;
data table2;
 set table1;
 array x{*} _numeric_;
 do _n_=1 to dim(x);
   x{_n_}=x{_n_}*.01;
 end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 22 Sep 2019 12:30:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Constructing-Tables/m-p/590727#M169116</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2019-09-22T12:30:19Z</dc:date>
    </item>
    <item>
      <title>Re: Constructing Tables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Constructing-Tables/m-p/590746#M169123</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc freq data=have;

     /* table displays only frequencies */
     tables ID_B * ID_S / nopct norow nocol;

     /* table displays only percents */
     tables ID_B * ID_S / nofreq norow nocol;

     weight VarA;

run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 22 Sep 2019 16:11:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Constructing-Tables/m-p/590746#M169123</guid>
      <dc:creator>Watts</dc:creator>
      <dc:date>2019-09-22T16:11:45Z</dc:date>
    </item>
    <item>
      <title>Re: Constructing Tables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Constructing-Tables/m-p/590814#M169147</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/133090"&gt;@RandyStan&lt;/a&gt;:&lt;/P&gt;
&lt;P&gt;If you want reports, follow the advice of&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/35763"&gt;@yabwon&lt;/a&gt;&amp;nbsp;or&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/270201"&gt;@Watts&lt;/a&gt;.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you want files, the solution by&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp&lt;/a&gt;&amp;nbsp;will work. Alternatively, if you want to save some I/O and solve in 2 passes through the input file (cannot be done in just one), consider:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have ;                                                                                                                                                                                                                                                     
  input (ID_B ID_S) (:$1.) VarA ;                                                                                                                                                                                                                               
  cards ;                                                                                                                                                                                                                                                       
A  B  10                                                                                                                                                                                                                                                        
A  C  10                                                                                                                                                                                                                                                        
C  D  10                                                                                                                                                                                                                                                        
C  A  10                                                                                                                                                                                                                                                        
D  B  15                                                                                                                                                                                                                                                        
A  A   5                                                                                                                                                                                                                                                        
C  B  10                                                                                                                                                                                                                                                        
B  B  20                                                                                                                                                                                                                                                        
A  C  10                                                                                                                                                                                                                                                        
run ;                                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                                
proc sql noprint ;                                                                                                                                                                                                                                              
  select unique id_s into :v separated by " " from have ;                                                                                                                                                                                                       
quit ;                                                                                                                                                                                                                                                          
                                                                                                                                                                                                                                                                
data _null_ ;                                                                                                                                                                                                                                                   
  array v &amp;amp;v ;                                                                                                                                                                                                                                                 
  if _n_ = 1 then do ;                                                                                                                                                                                                                                          
    dcl hash h () ;                                                                                                                                                                                                                                             
    h.definekey  ("id_b") ;                                                                                                                                                                                                                                     
    h.definedata ("id_b") ;                                                                                                                                                                                                                                     
    do over v ;                                                                                                                                                                                                                                                
      h.definedata (vname (v)) ;                                                                                                                                                                                                                               
    end ;                                                                                                                                                                                                                                                       
    h.definedone () ;                                                                                                                                                                                                                                           
  end ;                                                                                                                                                                                                                                                         
  set have end = lastobs ;                                                                                                                                                                                                                                      
  vsum ++ vara ;                                                                                                                                                                                                                                                
  if h.find() ne 0 then call missing (of v[*]) ;                                                                                                                                                                                                               
  do over v ;                                                                                                                                                                                                                                                  
    if vname (v) = id_s then v ++ vara ;                                                                                                                                                                                                                      
  end ;                                                                                                                                                                                                                                                         
  h.replace() ;                                                                                                                                                                                                                                                 
  if lastobs ;                                                                                                                                                                                                                                                  
  h.output (dataset:"table1") ;                                                                                                                                                                                                                                 
  dcl hiter hi ("h") ;                                                                                                                                                                                                                                          
  do while (hi.next() = 0) ;                                                                                                                                                                                                                                    
    do over v ;                                                                                                                                                                                                                                                
      v = divide (v, vsum) ;                                                                                                                                                                                                                                  
    end ;                                                                                                                                                                                                                                                       
    h.replace() ;                                                                                                                                                                                                                                               
  end ;                                                                                                                                                                                                                                                         
  h.output (dataset:"table2") ;                                                                                                                                                                                                                                 
run ;                                         
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Kind regards&lt;/P&gt;
&lt;P&gt;Paul D.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 23 Sep 2019 03:30:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Constructing-Tables/m-p/590814#M169147</guid>
      <dc:creator>hashman</dc:creator>
      <dc:date>2019-09-23T03:30:24Z</dc:date>
    </item>
  </channel>
</rss>

