<?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 Complex tables in SAS - How to switch the statistic depending on variable in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Complex-tables-in-SAS-How-to-switch-the-statistic-depending-on/m-p/823800#M81948</link>
    <description>&lt;P&gt;Basically, I am looking for a way to create the below table in SAS. I have been attempting with PROC TABULATE but have not been able to find a way to switch between statistics (i.e., N vs. median) depending on the variable. I'd appreciate any and all help with this!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;Variable&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;Statistics&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;TREATMENT PERIOD&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;Before Study Assigned Drug&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;N&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Patients with infection&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Number of infections per patient&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;median (range)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; infection 1 (Insert)&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; infection&amp;nbsp;2 (insert)&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; infection 3 (insert)&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;During Study Assigned Drug&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;N&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Patients with &lt;EM&gt;infection&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Number of &lt;EM&gt;infection&lt;/EM&gt;s per patient&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;median (range)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; infection 1 (insert)&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; infection 2 (insert)&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; infection 3 (insert)&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;FOLLOW-UP (30-Days Post Study Drug)&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;N&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Number of Patients with &lt;EM&gt;infection&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Number of &lt;EM&gt;infections&lt;/EM&gt; per patient&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;median (range)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; infection1 (insert)&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; infection2 (insert)&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;EM&gt;infection 3 (insert)&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
    <pubDate>Mon, 18 Jul 2022 10:43:30 GMT</pubDate>
    <dc:creator>jlb623</dc:creator>
    <dc:date>2022-07-18T10:43:30Z</dc:date>
    <item>
      <title>Complex tables in SAS - How to switch the statistic depending on variable</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Complex-tables-in-SAS-How-to-switch-the-statistic-depending-on/m-p/823800#M81948</link>
      <description>&lt;P&gt;Basically, I am looking for a way to create the below table in SAS. I have been attempting with PROC TABULATE but have not been able to find a way to switch between statistics (i.e., N vs. median) depending on the variable. I'd appreciate any and all help with this!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;Variable&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;Statistics&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;TREATMENT PERIOD&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;Before Study Assigned Drug&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;N&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Patients with infection&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Number of infections per patient&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;median (range)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; infection 1 (Insert)&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; infection&amp;nbsp;2 (insert)&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; infection 3 (insert)&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;During Study Assigned Drug&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;N&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Patients with &lt;EM&gt;infection&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Number of &lt;EM&gt;infection&lt;/EM&gt;s per patient&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;median (range)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; infection 1 (insert)&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; infection 2 (insert)&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; infection 3 (insert)&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;FOLLOW-UP (30-Days Post Study Drug)&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;N&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Number of Patients with &lt;EM&gt;infection&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Number of &lt;EM&gt;infections&lt;/EM&gt; per patient&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;median (range)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; infection1 (insert)&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; infection2 (insert)&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;EM&gt;infection 3 (insert)&lt;/EM&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;n (%)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Mon, 18 Jul 2022 10:43:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Complex-tables-in-SAS-How-to-switch-the-statistic-depending-on/m-p/823800#M81948</guid>
      <dc:creator>jlb623</dc:creator>
      <dc:date>2022-07-18T10:43:30Z</dc:date>
    </item>
    <item>
      <title>Re: Complex tables in SAS - How to switch the statistic depending on variable</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Complex-tables-in-SAS-How-to-switch-the-statistic-depending-on/m-p/823812#M81949</link>
      <description>&lt;P&gt;Please post the code you have and data in usable form, making it easier for us to understand the issue properly.&lt;/P&gt;</description>
      <pubDate>Mon, 18 Jul 2022 12:00:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Complex-tables-in-SAS-How-to-switch-the-statistic-depending-on/m-p/823812#M81949</guid>
      <dc:creator>andreas_lds</dc:creator>
      <dc:date>2022-07-18T12:00:18Z</dc:date>
    </item>
    <item>
      <title>Re: Complex tables in SAS - How to switch the statistic depending on variable</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Complex-tables-in-SAS-How-to-switch-the-statistic-depending-on/m-p/823842#M81950</link>
      <description>&lt;P&gt;You are going to have to explain a bit more about what "infection 1" etc actually mean. If you mean "exactly one infection" then for report procedures you likely need a second variable with the same values as the number of infections as the role of a variable to create median, or mean/max/min/std/range/qrange etc., as a VAR variable will preclude use of the same variable as a Class variable (using each level).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So example data is starting point in the form of data step code if at all possible to show what you have.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Tabulate will allow differing statistics but not in columns as you show so the n and percent would have to be on rows within a class variable with the row headings you show. To get something that looks exactly like you indicate will likely involve a summary step, some manipulation in a data step and then displaying the results.&lt;/P&gt;</description>
      <pubDate>Mon, 18 Jul 2022 14:02:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Complex-tables-in-SAS-How-to-switch-the-statistic-depending-on/m-p/823842#M81950</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2022-07-18T14:02:09Z</dc:date>
    </item>
    <item>
      <title>Re: Complex tables in SAS - How to switch the statistic depending on variable</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Complex-tables-in-SAS-How-to-switch-the-statistic-depending-on/m-p/824902#M81959</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/429762"&gt;@jlb623&lt;/a&gt;&amp;nbsp;and welcome to the SAS Support Communities!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Sorry for the late reply. My approach would rather look like this:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Compute the statistics in one or more PROC SQL / SUMMARY / FREQ / ... steps.&lt;/LI&gt;
&lt;LI&gt;Use a DATA step to combine the results in a dataset resembling the summary table to be produced.&lt;/LI&gt;
&lt;LI&gt;Use PROC REPORT to create the table from that dataset.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;"Switching between statistics" is then as simple as printing a list of character strings.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is an example (but the data structure may be different from yours)&lt;FONT face="helvetica"&gt;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-SPOILER&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* Create sample data for demonstration */

data have;
call streaminit(27182818);
do patno=1 to 200;
  do period=1 to 3;
    do _n_=1 to rand('poisson',1/period**2);
      aept=byte(rand('integer',65,67));
      output;
    end;
    if rand('bern',0.02) then leave;
    if _n_=1 then do;
      aept=' ';
      output;
    end;
  end;
end;
run;

proc format;
value period
1='Before Study Assigned Drug'
2='During Study Assigned Drug'
3='FOLLOW-UP (30-Days Post Study Drug)';
run;

/* Compute descriptive statistics */

proc sql;
create table periods as
select period, count(distinct patno) as npat,
       count(distinct case when aept=' ' then . else patno end) as npatinf,
       calculated npatinf/calculated npat as pctpatinf
from have
group by period;

create table patients as
select period, patno, sum(aept&amp;gt;' ') as ninf
from have
group by period, patno;

create table infections as
select period, aept, count(distinct patno) as npat_aept,
       calculated npat_aept/(select npat from periods where period=a.period) as pct_aept
from have a
where aept ne ' '
group by period, aept;
quit;

proc summary data=patients;
by period;
var ninf;
output out=medrange median= min= max= / autoname;
run;

/* Prepare input dataset for PROC REPORT */

data inftab;
length item $50 stat $20;
set periods(in=p)
    medrange(in=m)
    infections;
by period;
if p then do;
  item=put(period,period.);
  stat=put(npat, 3.);
  output;
  item='Patients with infection';
  stat=put(npatinf, 3.)||' '||put(-pctpatinf,percent8.1);
  output;
end;
else if m then do;
  item='Number of infections per patient: median (range)';
  stat=put(ninf_median,3.)||' ('||catx('-',ninf_min,ninf_max)||')';
  output;
end;
else do;
  item='&amp;nbsp;&amp;nbsp;'||aept;
  stat=put(npat_aept, 3.)||' '||put(-pct_aept,percent8.1);
  output;
end;
run;

/* Create the summary table (ODS destination: Listing) */

proc report data=inftab;
column period item stat;
define period / order noprint;
define item / 'TREATMENT PERIOD';
define stat / ' ';
break before period / skip;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;BR /&gt;Output:&lt;BR /&gt;
&lt;PRE&gt;TREATMENT PERIOD

Before Study Assigned Drug                          200
Patients with infection                             120 ( 60.0%)
Number of infections per patient: median (range)      1 (0-4)
&amp;nbsp;&amp;nbsp;A                                                  52 ( 26.0%)
&amp;nbsp;&amp;nbsp;B                                                  49 ( 24.5%)
&amp;nbsp;&amp;nbsp;C                                                  47 ( 23.5%)

During Study Assigned Drug                          194
Patients with infection                              44 ( 22.7%)
Number of infections per patient: median (range)      0 (0-2)
&amp;nbsp;&amp;nbsp;A                                                  16 (  8.2%)
&amp;nbsp;&amp;nbsp;B                                                  13 (  6.7%)
&amp;nbsp;&amp;nbsp;C                                                  20 ( 10.3%)

FOLLOW-UP (30-Days Post Study Drug)                 192
Patients with infection                              25 ( 13.0%)
Number of infections per patient: median (range)      0 (0-2)
&amp;nbsp;&amp;nbsp;A                                                  11 (  5.7%)
&amp;nbsp;&amp;nbsp;B                                                   9 (  4.7%)
&amp;nbsp;&amp;nbsp;C                                                   8 (  4.2%)&lt;/PRE&gt;
&lt;/LI-SPOILER&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 22 Jul 2022 14:33:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Complex-tables-in-SAS-How-to-switch-the-statistic-depending-on/m-p/824902#M81959</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2022-07-22T14:33:32Z</dc:date>
    </item>
  </channel>
</rss>

