<?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: PROC TABULATE: Missing as Percent of Non-Missing? in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/PROC-TABULATE-Missing-as-Percent-of-Non-Missing/m-p/247016#M56278</link>
    <description>&lt;P&gt;All I could come up with using &lt;STRONG&gt;proc tabulate&lt;/STRONG&gt; was this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table summ as
select group, gender, 1 / count(gender) as w
from demos
group by group;
quit;

proc format;
value cheat
low -&amp;lt; 1.0 = [percentn7.1]
1.0 - high = "100.0%";
run;
 
proc tabulate data=summ missing;
class group gender;
var w;
table gender all, group=""*w=""*(n=""*format=7.0 sum=""*format=cheat.);
run; &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Good enough?&lt;/P&gt;</description>
    <pubDate>Sat, 30 Jan 2016 05:07:29 GMT</pubDate>
    <dc:creator>PGStats</dc:creator>
    <dc:date>2016-01-30T05:07:29Z</dc:date>
    <item>
      <title>PROC TABULATE: Missing as Percent of Non-Missing?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-TABULATE-Missing-as-Percent-of-Non-Missing/m-p/246944#M56270</link>
      <description>&lt;P&gt;When producing demographics reports, we usually don't have a 100% match rate, so there are missing values. &amp;nbsp;Let's choose a simple example: gender. &amp;nbsp;In the code below, we are creating a SAS dataset with two variables, group and gender. &amp;nbsp;We then use PROC TABULATE to show the percentage of females and males in groups A and B. &amp;nbsp;Though I want to show the number of individuals for which I do not have a gender (the missings), I do not want the missings used in the calculation of percent females and percent males. &amp;nbsp;Furthermore--and this is the more complicated part--I want the percentage with Unknown gender (again, the missings) to be shown as the percentage of non-missing, and the column total percent to still add up to 100% (the sum of the non-missing percentages).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The program below generates the following output:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="https://communities.sas.com/t5/image/serverpage/image-id/1677i4BF5411F677B7EB4/image-size/original?v=mpbl-1&amp;amp;px=-1" border="0" alt="PROC TABULATE Output" title="PROC TABULATE Output" /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;However, I would like to modify my PROC TABULATE step to generate the following table.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="https://communities.sas.com/t5/image/serverpage/image-id/1678i876FAA65DB46CD91/image-size/original?v=mpbl-1&amp;amp;px=-1" border="0" alt="Desired PROC TABULATE Output" title="Desired PROC TABULATE Output" /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;How can this be accomplished?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks much,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;David Oesper&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc format;
   value $ge
      'F' = "Female"
      'M' = "Male"
   other  = "Unknown";
run;

proc format;
   picture pctfmt low-high='009.9%';
run;

data demos;
   input @1 group  $1.
         @3 gender $1.
         ;
datalines;
A F
A F
A F
A F
A M
A M
A
B F
B F
B F
B M
B
B
;
run;

proc tabulate data=demos format=comma10. missing;        
   class gender group / order=data;                                  
   classlev gender group;
   format gender $ge.;

   table gender=' ' all, group=''*(n colpctn*f=pctfmt.) / box='Gender' misstext=' ';    
   keylabel all='TOTAL' n=' ' colpctn=' ';

   title 'Gender'; 
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 29 Jan 2016 17:53:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-TABULATE-Missing-as-Percent-of-Non-Missing/m-p/246944#M56270</guid>
      <dc:creator>doesper</dc:creator>
      <dc:date>2016-01-29T17:53:38Z</dc:date>
    </item>
    <item>
      <title>Re: PROC TABULATE: Missing as Percent of Non-Missing?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-TABULATE-Missing-as-Percent-of-Non-Missing/m-p/247016#M56278</link>
      <description>&lt;P&gt;All I could come up with using &lt;STRONG&gt;proc tabulate&lt;/STRONG&gt; was this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table summ as
select group, gender, 1 / count(gender) as w
from demos
group by group;
quit;

proc format;
value cheat
low -&amp;lt; 1.0 = [percentn7.1]
1.0 - high = "100.0%";
run;
 
proc tabulate data=summ missing;
class group gender;
var w;
table gender all, group=""*w=""*(n=""*format=7.0 sum=""*format=cheat.);
run; &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Good enough?&lt;/P&gt;</description>
      <pubDate>Sat, 30 Jan 2016 05:07:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-TABULATE-Missing-as-Percent-of-Non-Missing/m-p/247016#M56278</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2016-01-30T05:07:29Z</dc:date>
    </item>
    <item>
      <title>Re: PROC TABULATE: Missing as Percent of Non-Missing?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-TABULATE-Missing-as-Percent-of-Non-Missing/m-p/247053#M56280</link>
      <description>&lt;P&gt;Thanks, PG!&amp;nbsp; I think it was clever of you to use count(gender) in the PROC SQL step and omitting gender from the group by in order to apply the fraction each observation with known gender contributes towards the total of all known genders in each group (i.e. NOTE: The query requires remerging summary statistics back with the original data).&amp;nbsp; I did not know (or had forgotten) that count(gender) counts only non-missing observations and count(*) counts both missing and non-missing.&amp;nbsp; Kudos, I would not have thought of this solution and I have been a SAS programmer for a very long time.&lt;/P&gt;
&lt;P&gt;I used your contribution and made some additional modifications to the code to get exactly what I am looking for (posted below).&amp;nbsp; I hope others will find this code to be useful when they wish to report percentages in terms of total non-missing and yet include in the report missing as percent of non-missing to see coverage.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks again!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;David Oesper&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc format;
   value $ge
      'F'    = "Female"
      'M'    = "Male"
      other  = "Unknown";
   value pctfmt
      low -&amp;lt; 1.0 = [percentn7.1]
      1.0 - high = "100.0%";
run;

data demos;
   input @1 grp    $1.
         @3 gender $1.
         ;
datalines;
A F
A F
A F
A F
A M
A M
A
B F
B F
B F
B M
B
B
;
run;

proc sql noprint;
   create table demos2 as
   select grp
         ,gender
         ,1/count(gender) as obspct
   from demos
   group by grp
   order by missing(grp), grp
;quit;

proc tabulate data=demos2 format=comma10. missing;
   class gender grp / order=data;
   classlev gender grp;
   format gender $ge.;

   table gender=' ' all, grp=''*obspct=''*(n='' sum=''*format=pctfmt.) / box='Gender' misstext=' ';
   keylabel all='TOTAL';

   title 'Gender';
   var obspct;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 30 Jan 2016 20:24:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-TABULATE-Missing-as-Percent-of-Non-Missing/m-p/247053#M56280</guid>
      <dc:creator>doesper</dc:creator>
      <dc:date>2016-01-30T20:24:49Z</dc:date>
    </item>
    <item>
      <title>Re: PROC TABULATE: Missing as Percent of Non-Missing?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-TABULATE-Missing-as-Percent-of-Non-Missing/m-p/273336#M58440</link>
      <description>&lt;P&gt;Hi ,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have the same problem but if I multiple variables in the same proc tabulate and they have missing observations for different variables. Ideally I would love to have proc tabulate to tweak the "missing" option. I added a variable pay to the dataset and would like to have the output below. Any suggestions? is there a instead of using proc sql ? Or i would need to learn proc report?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;proc format;&lt;BR /&gt;value $ge&lt;BR /&gt;'F' = "Female"&lt;BR /&gt;'M' = "Male"&lt;BR /&gt;other = "Unknown";&lt;BR /&gt;value pctfmt&lt;BR /&gt;low -&amp;lt; 1.0 = [percentn7.1]&lt;BR /&gt;1.0 - high = "100.0%";&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data demos;&lt;BR /&gt;input @1 grp $1.&lt;BR /&gt;@3 gender $1.&lt;BR /&gt;@5 pay $1.&lt;BR /&gt;;&lt;BR /&gt;datalines;&lt;BR /&gt;A F M&lt;BR /&gt;A F D&lt;BR /&gt;A F M&lt;BR /&gt;A F D&lt;BR /&gt;A M&lt;BR /&gt;A M D&lt;BR /&gt;A &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;D&lt;BR /&gt;B F M&lt;BR /&gt;B F D&lt;BR /&gt;B F D&lt;BR /&gt;B M&lt;BR /&gt;B &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;D&lt;BR /&gt;B&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;M&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Desired Output(in the same proc tabulate):&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;Gender&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;A&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;B&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Female&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;66.70%&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;75.00%&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Male&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;33.30%&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;25.00%&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Unknown&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;16.70%&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;50.00%&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;TOTAL&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;7&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;100.00%&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;6&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;100.00%&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Pay&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&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;D&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;66.67%&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;60.00%&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;M&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;33.33%&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;40.00%&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Unknown&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;14.29%&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;16.67%&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;TOTAL&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;7&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;100.00%&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;6&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;100.00%&lt;/P&gt;&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;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Gender&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Female&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;66.70%&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;75.00%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Male&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;33.30%&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;25.00%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Unknown&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;16.70%&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;50.00%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;TOTAL&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;100.00%&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;100.00%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Pay&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;D&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;66.67%&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;60.00%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;33.33%&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;40.00%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Unknown&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;14.29%&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;16.67%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;TOTAL&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;100.00%&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;100.00%&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Thu, 26 May 2016 18:03:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-TABULATE-Missing-as-Percent-of-Non-Missing/m-p/273336#M58440</guid>
      <dc:creator>nrozario</dc:creator>
      <dc:date>2016-05-26T18:03:57Z</dc:date>
    </item>
    <item>
      <title>Re: PROC TABULATE: Missing as Percent of Non-Missing?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-TABULATE-Missing-as-Percent-of-Non-Missing/m-p/273345#M58441</link>
      <description>&lt;P&gt;Suggestion: submit as a new topic.&lt;/P&gt;</description>
      <pubDate>Thu, 26 May 2016 18:16:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-TABULATE-Missing-as-Percent-of-Non-Missing/m-p/273345#M58441</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2016-05-26T18:16:54Z</dc:date>
    </item>
  </channel>
</rss>

