<?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: Trying to all character fields frequencies details in a SAS dataset. in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453747#M284084</link>
    <description>&lt;P&gt;One more thing ...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;If you are after a report rather than a data set, and&lt;/LI&gt;
&lt;LI&gt;If the report format is mildly flexible&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;You should be able to use a very simple program:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc tabulate data=have missing;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; class _character_;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; tables _character_, n*f=comma11. &amp;nbsp;pctn;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;</description>
    <pubDate>Thu, 12 Apr 2018 20:23:45 GMT</pubDate>
    <dc:creator>Astounding</dc:creator>
    <dc:date>2018-04-12T20:23:45Z</dc:date>
    <item>
      <title>Trying to all character fields frequencies details in a SAS dataset.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453730#M284079</link>
      <description>&lt;P&gt;Trying to&amp;nbsp;all character fields frequencies details in a SAS dataset.&lt;/P&gt;&lt;P&gt;Below are sample inputs and output details what I am trying to accomplish.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Can someone able to help/suggest on this - how to get this done?.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Input:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Key&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Char1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Char2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Char3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Num1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Char4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Num2&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2345&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;MN&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;expected&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3445.50&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;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3455&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;No&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;MN&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Out of bucket&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;123.5&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;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1234&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;MN&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;expected&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Done&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;8865&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;PA&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;expected&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;In-progress&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;33345&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;PA&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Out of bucket&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;808.34&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Validation&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;74521&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;MN&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Out of bucket&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;In-progress&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;11965&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;No&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;MN&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;expected&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;In-progress&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Expected Output:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Var&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Freq.&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Count&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Percentage&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Char1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Yes&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;57.14286&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Char1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;No&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;28.57143&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Char1&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;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;14.28571&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Char2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;MN&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;5&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;71.42857&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Char2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;PA&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;28.57143&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Char3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;expected&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;57.14286&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Char3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Out of bucket&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;42.85714&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Char4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Done&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.28571&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Char4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;In-progress&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;42.85714&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Char4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Validation&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.28571&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Char4&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;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;28.57143&lt;/P&gt;&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;Important Note: the original table has more than 150 fields and 2+ billion records. So the code should be more efficiency by performance. Currently I am using PROC content to get char fields name then using &amp;nbsp;PORC FREQ to get frequencies thru do loop.&lt;/P&gt;</description>
      <pubDate>Thu, 12 Apr 2018 19:52:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453730#M284079</guid>
      <dc:creator>ez123</dc:creator>
      <dc:date>2018-04-12T19:52:30Z</dc:date>
    </item>
    <item>
      <title>Re: Trying to all character fields frequencies details in a SAS dataset.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453738#M284080</link>
      <description>&lt;P&gt;Certainly PROC FREQ can compute the Freq, Count and Percentage. It shouldn't be hard then to combine all of the Var into a single data set if that's what you want. Since you are already doing that, I don't understand what you are asking.&lt;/P&gt;</description>
      <pubDate>Thu, 12 Apr 2018 20:00:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453738#M284080</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2018-04-12T20:00:10Z</dc:date>
    </item>
    <item>
      <title>Re: Trying to all character fields frequencies details in a SAS dataset.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453740#M284081</link>
      <description>&lt;P&gt;Not going to meet the efficient requirements but this works quite well.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can reference all character variables with _character_.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/*This code is an example of how to generate a table with 
Variable Name, Variable Value, Frequency, Percent, Cumulative Freq and Cum Pct
No macro's are required

Use Proc Freq to generate the list, list variables in a table statement if only specific variables are desired
Use ODS Table to capture the output and then format the output into a printable table.
*/

*Run frequency for tables;
ods table onewayfreqs=temp;
proc freq data=sashelp.class;
	table _character_;
run;

*Format output;
data want;
length variable $32. variable_value $50.;
set temp;
Variable=scan(table, 2);

Variable_Value=strip(trim(vvaluex(variable)));

keep variable variable_value frequency percent cum:;
label variable='Variable' 
	variable_value='Variable Value';
run;

*Display;
proc print data=want label;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Apr 2018 20:02:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453740#M284081</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2018-04-12T20:02:05Z</dc:date>
    </item>
    <item>
      <title>Re: Trying to all character fields frequencies details in a SAS dataset.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453741#M284082</link>
      <description>&lt;P&gt;Step 1:&amp;nbsp; Become a little familiar with ODS.&amp;nbsp; For example, run a simple proc freq:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ODS Trace On;&lt;/P&gt;
&lt;P&gt;proc freq data=have;&lt;/P&gt;
&lt;P&gt;tables char1;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This will tell you the names of the output elements that are available.&amp;nbsp; I think the one you want is named OneWayFreqs, but you will need to check that.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Step 2:&amp;nbsp; Run a PROC FREQ on all character variables, capturing the results using ODS.&amp;nbsp; Something along these lines:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc freq data=have;&lt;/P&gt;
&lt;P&gt;tables _character_;&lt;/P&gt;
&lt;P&gt;ods output OneWayFreqs = lib.freq_results;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;That should give you what you are asking for, with a little bit of reformatting required.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;******************EDITED:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Looks like Reeza beat me to the punch, with a little more detail as well.&lt;/P&gt;</description>
      <pubDate>Thu, 12 Apr 2018 20:03:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453741#M284082</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-04-12T20:03:40Z</dc:date>
    </item>
    <item>
      <title>Re: Trying to all character fields frequencies details in a SAS dataset.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453743#M284083</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13879"&gt;@Reeza&lt;/a&gt;&lt;/P&gt;
&lt;P&gt;ah yes, VVALUEX, I should have thought of that, brilliant&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/204379"&gt;@ez123&lt;/a&gt;&lt;/P&gt;
&lt;P&gt;It's hard to image any method being considered "efficient" with 2 BILLION records&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Apr 2018 20:07:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453743#M284083</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2018-04-12T20:07:35Z</dc:date>
    </item>
    <item>
      <title>Re: Trying to all character fields frequencies details in a SAS dataset.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453747#M284084</link>
      <description>&lt;P&gt;One more thing ...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;If you are after a report rather than a data set, and&lt;/LI&gt;
&lt;LI&gt;If the report format is mildly flexible&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;You should be able to use a very simple program:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc tabulate data=have missing;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; class _character_;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; tables _character_, n*f=comma11. &amp;nbsp;pctn;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Apr 2018 20:23:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453747#M284084</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-04-12T20:23:45Z</dc:date>
    </item>
    <item>
      <title>Re: Trying to all character fields frequencies details in a SAS dataset.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453756#M284085</link>
      <description>&lt;P&gt;Thanks Reeza, this is almost match with my expectation. Just it is missing to calculate the null (missing) values. Can you please include that.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For example Total number of record is 7 and Char1 has only 6.&amp;nbsp;&amp;nbsp;&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;variable&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;variable_value&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Frequency&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Percent&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;CumFrequency&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;CumPercent&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Char1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;No&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;33.33&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Char1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Yes&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;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;Char2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;MN&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;5&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;71.43&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;5&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;71.43&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Char2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;PA&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;28.57&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;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Char3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Out of bucket&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;42.86&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;42.86&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Char3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;expected&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;57.14&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;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Char4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Done&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;20.00&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;20.00&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Char4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;In-progress&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;TD&gt;&lt;P&gt;4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;80.00&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Char4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Validation&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;20.00&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;5&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;100.00&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;DIV class="_n_n3"&gt;&amp;nbsp;&lt;/DIV&gt;</description>
      <pubDate>Thu, 12 Apr 2018 20:46:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453756#M284085</guid>
      <dc:creator>ez123</dc:creator>
      <dc:date>2018-04-12T20:46:37Z</dc:date>
    </item>
    <item>
      <title>Re: Trying to all character fields frequencies details in a SAS dataset.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453761#M284087</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/204379"&gt;@ez123&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;Thanks Reeza, this is almost match with my expectation. Just it is missing to calculate the null (missing) values. Can you please include that.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;You should be able to figure that part out. Hint: it's 6 more characters.&lt;/P&gt;</description>
      <pubDate>Thu, 12 Apr 2018 21:07:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453761#M284087</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2018-04-12T21:07:12Z</dc:date>
    </item>
    <item>
      <title>Re: Trying to all character fields frequencies details in a SAS dataset.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453769#M284088</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile datalines expandtabs truncover;
input Key	Char1 $	Char2 $	Char3 &amp;amp; $20.	Num1	Char4 &amp;amp; $20.	Num2;
datalines;
2345	Yes	MN	expected	3445.5	.	1
3455	No	MN	Out of bucket	123.5	.	0
1234	.	MN	expected	0	Done	1
8865	Yes	PA	expected	0	In-progress	 0
33345	Yes	PA	Out of bucket	808.34	Validation	1
74521	Yes	MN	Out of bucket	0	In-progress	 1
11965	No	MN	expected	0	In-progress	 1
;

data _null_;
if _n_=1 then do;
 dcl hash H (ordered: "A",hashexp: 20) ;
   h.definekey  ("var",'freq') ;
   h.definedata ("var","freq", "count",'pct') ;
   h.definedone () ;
end;
set have end=last nobs=nobs;
array t(*) _char_;
do _n_=1 to dim(t);
var=vname(t(_n_));
freq=t(_n_);
if h.check() ne 0 then do;
count=1;
pct=count/nobs*100;
h.replace();
end;
else if h.find()=0 then do;
count+1;
pct=count/nobs*100;
h.replace();
end;
end;
if last then h.output(dataset:"want");
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 12 Apr 2018 21:40:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453769#M284088</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-04-12T21:40:29Z</dc:date>
    </item>
    <item>
      <title>Re: Trying to all character fields frequencies details in a SAS dataset.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453780#M284089</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile datalines expandtabs truncover;
input Key	Char1 $	Char2 $	Char3 &amp;amp; $20.	Num1	Char4 &amp;amp; $20.	Num2;
datalines;
2345	Yes	MN	expected	3445.5	.	1
3455	No	MN	Out of bucket	123.5	.	0
1234	.	MN	expected	0	Done	1
8865	Yes	PA	expected	0	In-progress	 0
33345	Yes	PA	Out of bucket	808.34	Validation	1
74521	Yes	MN	Out of bucket	0	In-progress	 1
11965	No	MN	expected	0	In-progress	 1
;

proc transpose data=have out=_have ;
by key notsorted;
var _char_;
run;
proc sql;
create table want as
select _name_ as var, col1 as freq,count(*) as count,(select count(*) from have) as cnt,calculated count/calculated cnt as pct
from _have
group by 1,2;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 12 Apr 2018 22:31:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453780#M284089</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-04-12T22:31:59Z</dc:date>
    </item>
    <item>
      <title>Re: Trying to all character fields frequencies details in a SAS dataset.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453783#M284090</link>
      <description>&lt;P&gt;I would be very tempted to try something along these lines:&lt;/P&gt;
&lt;PRE&gt;proc tabulate data=have;
   class _character_ /missing;
   classlev _character_ /style=[just=r];
   table _character_,
         n=count colpctn='%'*f=9.5
         ;
run;&lt;/PRE&gt;
&lt;P&gt;Though it is going to be a very long table given many variables and levels of variables.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Apr 2018 22:49:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Trying-to-all-character-fields-frequencies-details-in-a-SAS/m-p/453783#M284090</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2018-04-12T22:49:44Z</dc:date>
    </item>
  </channel>
</rss>

