The FREQ Procedure

PROC FREQ Statement

PROC FREQ <options> ;

The PROC FREQ statement invokes the FREQ procedure. Optionally, it also identifies the input data set. By default, the procedure uses the most recently created SAS data set.

Table 3.4 lists the options available in the PROC FREQ statement. Descriptions of the options follow in alphabetical order.

Table 3.4: PROC FREQ Statement Options




Begins the next one-way table on the current page


Names the input data set


Specifies the outline and cell divider characters for crosstabulation tables


Displays the number of levels for all TABLES variables


Suppresses all displayed output


Specifies the order for reporting variable values


Displays one table per page

You can specify the following options in the PROC FREQ statement.


begins display of the next one-way frequency table on the same page as the preceding one-way table if there is enough space to begin the table. By default, the next one-way table begins on the current page only if the entire table fits on that page. The COMPRESS option is not valid with the PAGE option.


names the SAS data set to be analyzed by PROC FREQ. If you omit the DATA= option, the procedure uses the most recently created SAS data set.


defines the characters to be used for constructing the outlines and dividers for the cells of crosstabulation table displays. The formchar-string should be three characters long. The characters are used to draw the vertical separators (1), the horizontal separators (2), and the vertical-horizontal intersections (7). If you do not specify the FORMCHAR= option, PROC FREQ uses FORMCHAR(1,2,7)='|-+' by default. Table 3.5 summarizes the formatting characters used by PROC FREQ.

Table 3.5: Formatting Characters Used by PROC FREQ



Used to Draw



Vertical separators



Horizontal separators



Intersections of vertical and horizontal separators

The FORMCHAR= option can specify 20 different SAS formatting characters used to display output; however, PROC FREQ uses only the first, second, and seventh formatting characters. Therefore, the proper specification for PROC FREQ is FORMCHAR(1,2,7)= 'formchar-string'.

Specifying all blanks for formchar-string produces crosstabulation tables with no outlines or dividers—for example, FORMCHAR(1,2,7)=' '. You can use any character in formchar-string, including hexadecimal characters. If you use hexadecimal characters, you must put an x after the closing quote. For information about which hexadecimal codes to use for which characters, see the documentation for your hardware.

See the CALENDAR, PLOT, and TABULATE procedures in the Base SAS Procedures Guide for more information about form characters.


displays the Number of Variable Levels table, which provides the number of levels for each variable named in the TABLES statements. See the section Number of Variable Levels Table for details. PROC FREQ determines the variable levels from the formatted variable values, as described in the section Grouping with Formats.


suppresses the display of all output. You can use the NOPRINT option when you only want to create an output data set. See the section Output Data Sets for information about the output data sets produced by PROC FREQ. Note that the NOPRINT option temporarily disables the Output Delivery System (ODS). For more information, see Chapter 20: Using the Output Delivery System in SAS/STAT 12.1 User's Guide.

Note: A NOPRINT option is also available in the TABLES statement. It suppresses display of the crosstabulation tables but allows display of the requested statistics.


specifies the order of the variable levels in the frequency and crosstabulation tables, which you request in the TABLES statement.

The ORDER= option can take the following values:

Value of ORDER=

Levels Ordered By


Order of appearance in the input data set


External formatted value, except for numeric variables with no explicit format, which are sorted by their unformatted (internal) value


Descending frequency count; levels with the most observations come first in the order


Unformatted value

By default, ORDER=INTERNAL. The FORMATTED and INTERNAL orders are machine-dependent. The ORDER= option does not apply to missing values, which are always ordered first.

For more information about sort order, see the chapter on the SORT procedure in the Base SAS Procedures Guide and the discussion of BY-group processing in SAS Language Reference: Concepts.


displays only one table per page. Otherwise, PROC FREQ displays multiple tables per page as space permits. The PAGE option is not valid with the COMPRESS option.