Table of Contents
The PROC FREQ procedure in SAS is one of the most fundamental tools for summarizing categorical data. While its primary function is to generate a detailed frequency table showing counts, percentages, and cumulative statistics, analysts often require only the raw frequencies (counts). Displaying unnecessary percentage columns can clutter reports, especially when focusing purely on observation totals. Fortunately, SAS provides straightforward options within the PROC FREQ syntax to selectively suppress these percentage values, ensuring a clean and focused output. This guide details the syntax required to achieve frequency counts without the default display of percentages in both one-way and two-way tables.
Understanding how to manipulate the output of statistical procedures is key to efficient data reporting in SAS. When dealing with large datasets or preparing simplified summaries for non-technical audiences, removing redundant percentage columns (such as cumulative percentages, row percentages, or column percentages) becomes essential. We will explore the specific options used in the TABLES statement—namely NOPERCENT, NOCUM, NOROW, and NOCOL—and demonstrate their application through practical coding examples using the built-in SAS libraries.
There are two primary methods for controlling the output generated by the PROC FREQ procedure in SAS, depending on whether you are analyzing a single variable (one-way table) or the relationship between two variables (two-way table or crosstabulation). Both methods rely on specific options included in the TABLES statement to remove percentage calculations.
Understanding Default PROC FREQ Output
By default, when you execute the PROC FREQ procedure without any special options, it produces a comprehensive frequency table. This table usually includes four key statistics for each category: the absolute Frequency (count), the Percent (the percentage of total observations that fall into that category), the Cumulative Frequency (running total of counts), and the Cumulative Percent (running total of percentages). While this detailed information is often useful for thorough data exploration, reporting requirements sometimes dictate a simpler output focusing strictly on the raw counts.
The complexity increases when analyzing two categorical variables simultaneously (crosstabulation). In a two-way table, SAS calculates not just the overall percentage (cell count divided by total observations), but also the Row Percent and the Column Percent. These specialized percentages help assess conditional relationships between the variables. Therefore, if the goal is only to display the count of observations falling into each cell combination, all three percentage types must be explicitly suppressed using the appropriate options in the TABLES statement.
Method 1: Controlling Output in One-Way Frequency Tables
To generate a simple one-way frequency table showing only the count (Frequency) for a single variable, you must use the NOPERCENT and NOCUM options. The NOPERCENT option instructs PROC FREQ to omit the standard percentage column, while the NOCUM option suppresses both the cumulative frequency and the cumulative percentage columns. Since SAS calculates the standard percentage and cumulative statistics by default, both options are necessary to ensure the output is limited strictly to the raw frequency counts.
The structure below demonstrates how to apply these options within the PROC FREQ syntax. Note that the options are placed after a forward slash (/) following the variable list in the TABLES statement. This syntax is critical for differentiating between the variables being analyzed and the display options being applied to the output tables.
Syntax for One-Way Table Suppression:
proc freq data=my_data order=freq;
tables my_variable / nopercent nocum;
run;In this code block, my_data represents the input dataset, and my_variable is the categorical variable for which we want frequency counts. The optional order=freq statement is often used to sort the output table by the frequency count in descending order, making it easier to identify the most common categories, though it is not strictly required for percentage suppression.
Method 2: Suppressing Percentages in Two-Way Frequency Tables
Two-way frequency tables, or crosstabulations, display the joint distribution of two variables (e.g., my_variable1 and my_variable2). Because of the complexity of these tables, they usually display up to four numerical values per cell: Frequency, Cell Percent, Row Percent, and Column Percent. To limit the output of a two-way table to only the Frequency count, you must use a combination of three options: NOPERCENT, NOROW, and NOCOL.
The NOPERCENT option handles the suppression of the overall cell percentage. The NOROW option eliminates the row percentages, which show the distribution within each row category. Finally, the NOCOL option removes the column percentages, which show the distribution within each column category. Using all three ensures that the resulting table is concise, containing only the raw count for each combination of categories defined by the interaction of my_variable1 and my_variable2 (denoted by the asterisk *).
Syntax for Two-Way Table Suppression:
proc freq data=my_data order=freq;
tables my_variable1*my_variable2 / norow nocol nopercent nocum;
run;While the NOCUM option is technically available here, it is often redundant in a standard two-way table output as cumulative statistics are typically only calculated for the margins or when specific options are used. However, including NOPERCENT, NOROW, and NOCOL guarantees that all percentage-based calculations within the core table are removed, resulting in a clean count-based crosstabulation.
Introducing the Example Dataset: sashelp.BirthWgt
To illustrate these methods, we will utilize a practical example using the SAS built-in dataset called sashelp.BirthWgt. This dataset contains various characteristics for 100,000 mothers that recently gave birth. This large, complex dataset is ideal for demonstrating how PROC FREQ handles different types of variables and how the output options dramatically affect readability.
Before running the frequency analyses, it is good practice to inspect the structure and initial observations of the dataset. We use the PROC PRINT procedure to view the first ten records, helping us understand the format and content of the variables we plan to analyze, such as Race and Married. This preliminary step ensures that we are targeting the correct variables for categorical summarization.
We can use PROC PRINT to view the first 10 observations from this dataset:
/*view first 10 observations from BirthWgt dataset*/ proc print data=sashelp.BirthWgt (obs=10); run;

As shown in the output, the dataset contains numerous variables. For the following examples, we will focus on the categorical variables Race and Married, which are excellent candidates for demonstrating how to generate controlled frequency tables. The goal is to obtain clear counts of observations within each racial category and cross-reference these counts with marital status without cluttering the results with percentages.
Example 1: Suppress Percentages in One-Way Frequency Table
Our first example focuses on analyzing the distribution of the Race variable. Initially, we run PROC FREQ using only the basic syntax to see the default output structure. This serves as a baseline comparison, highlighting the columns we intend to remove in the subsequent step. The default execution reveals the standard four columns: Frequency, Percent, Cumulative Frequency, and Cumulative Percent.
We can use the following code to create a default frequency table for the Race variable:
/*create frequency table for Race variable*/
proc freq data=sashelp.BirthWgt;
tables Race;
run;
By default, SAS displays percentages and cumulative statistics in the frequency table. This is the standard behavior for the PROC FREQ procedure when analyzing a single variable. While the percentages are helpful for relative comparisons, we often need to suppress them for cleaner reports focused purely on raw counts.
To suppress both the standard percentage column and the cumulative statistics, we introduce the NOPERCENT and NOCUM options into the TABLES statement. This modification dramatically simplifies the output, retaining only the category labels and their corresponding frequency counts. The resulting table is highly efficient for data auditing or population summaries where proportions are not immediately relevant.
To suppress the percentages, we can use the NOPERCENT and NOCUM options:
/*create frequency table for Race variable and suppress percentages*/
proc freq data=sashelp.BirthWgt;
tables Race / nopercent nocum;
run;
The resulting table is now confined to just two columns: the Race category and the associated Frequency count. The options NOPERCENT and NOCUM have successfully streamlined the output, achieving the goal of frequency counts without any percentage calculations, thus providing a much cleaner visualization of the data distribution.
Example 2: Suppress Percentages in Two-Way Frequency Table
When analyzing the relationship between two categorical variables, such as Race and Married, the output from PROC FREQ is presented as a crosstabulation table. This detailed table shows the counts for every unique combination of the two variables. We first run the default code to establish a clear understanding of the standard output complexity.
We can use the following code to create a two-way frequency table for the Race and Married variables:
/*create frequency table for Race and Married variables*/
proc freq data=sashelp.BirthWgt;
tables Race*Married;
run;
By default, SAS displays percentages for overall percent, row percent, and column percent for each cell in the frequency table, alongside the frequency count itself. This results in a total of four statistical metrics per cell. To simplify this output and retain only the raw counts, we must specifically target and suppress each type of percentage calculation using the appropriate options.
To suppress all these percentage types simultaneously, we use the NOROW (for row percentages), NOCOL (for column percentages), and NOPERCENT (for cell percentages) statements:
/*create frequency table for Race and Married variables and suppress percentages*/
proc freq data=sashelp.BirthWgt;
tables Race*Married / norow nocol nopercent;
run;
Notice that the frequency table only shows Frequency values and no percentage values for each cell in the table. By strategically applying NOROW, NOCOL, and NOPERCENT, we have successfully stripped away all percentage calculations, leaving a concise summary focused exclusively on the absolute counts of mothers categorized by race and marital status. This level of control is essential for generating specialized reports in SAS programming environments.
Summary of PROC FREQ Output Control Options
The ability to customize the output of statistical procedures like PROC FREQ is a hallmark of efficient SAS programming. Rather than relying on default settings that can lead to overly complex tables, analysts can use specialized options within the TABLES statement to tailor the results exactly to their reporting needs. The specific options required depend on the dimensionality of the analysis (one-way vs. two-way).
For quick reference, here is a summary of the key options discussed and their specific function in suppressing percentage metrics:
- NOPERCENT: Suppresses the standard percentage (cell percentage in two-way tables).
- NOCUM: Suppresses cumulative frequency and cumulative percentage (primarily relevant for one-way tables).
- NOROW: Suppresses row percentages (relevant for two-way tables).
- NOCOL: Suppresses column percentages (relevant for two-way tables).
Mastering these options ensures that statistical output is not only accurate but also formatted in the most digestible way possible, improving communication of data insights across technical and non-technical audiences alike.
Conclusion: Achieving Clean, Count-Based Outputs
Generating frequency tables that contain only raw counts, while suppressing all calculated percentages, is a common requirement in data analysis and reporting using SAS. Whether you are performing a simple one-way analysis or a more complex crosstabulation, the flexibility of the PROC FREQ procedure allows for precise control over the output metrics. By systematically applying the options NOPERCENT, NOCUM, NOROW, and NOCOL as needed, analysts can produce clean, validated results tailored specifically to their reporting standards. This ability to fine-tune output saves time in post-processing and ensures the integrity of the statistical summaries presented.
The following tutorials explain how to perform other common tasks in SAS:
Cite this article
stats writer (2025). How to Generate Frequencies Without Percentages Using PROC FREQ in SAS. PSYCHOLOGICAL SCALES. Retrieved from https://scales.arabpsychology.com/stats/how-do-you-use-proc-freq-to-produce-frequencies-without-percentages-in-sas/
stats writer. "How to Generate Frequencies Without Percentages Using PROC FREQ in SAS." PSYCHOLOGICAL SCALES, 21 Nov. 2025, https://scales.arabpsychology.com/stats/how-do-you-use-proc-freq-to-produce-frequencies-without-percentages-in-sas/.
stats writer. "How to Generate Frequencies Without Percentages Using PROC FREQ in SAS." PSYCHOLOGICAL SCALES, 2025. https://scales.arabpsychology.com/stats/how-do-you-use-proc-freq-to-produce-frequencies-without-percentages-in-sas/.
stats writer (2025) 'How to Generate Frequencies Without Percentages Using PROC FREQ in SAS', PSYCHOLOGICAL SCALES. Available at: https://scales.arabpsychology.com/stats/how-do-you-use-proc-freq-to-produce-frequencies-without-percentages-in-sas/.
[1] stats writer, "How to Generate Frequencies Without Percentages Using PROC FREQ in SAS," PSYCHOLOGICAL SCALES, vol. X, no. Y, ص Z-Z, November, 2025.
stats writer. How to Generate Frequencies Without Percentages Using PROC FREQ in SAS. PSYCHOLOGICAL SCALES. 2025;vol(issue):pages.
