TABULATE Procedure

CLASS Statement

Identifies class variables for the table. Class variables determine the categories that PROC TABULATE uses to calculate statistics.
Note: CLASS statements without options use the internal default or the value specified by an option in the PROC TABULATE statement. For example, in the following code, variables c and d would use the internal default. If an ORDER= option had been specified in the PROC TABULATE statement, then variables c and d would use the value specified by the ORDER= option in the PROC TABULATE statement.
class a b / order=data;
class c d; 
Tips: You can use multiple CLASS statements.

Some CLASS statement options are also available in the PROC TABULATE statement. They affect all CLASS variables rather than just the ones that you specify in a CLASS statement.

Using Preloaded Formats with Class Variables

Using Multilabel Formats

Syntax

Required Argument

variable(s)
specifies one or more variables that the procedure uses to group the data. Variables in a CLASS statement are referred to as class variables. Class variables can be numeric or character. Class variables can have continuous values, but they typically have a few discrete values that define the classifications of the variable. You do not have to sort the data by class variables.
Interaction:If a variable name and a statistic name are the same, enclose the statistic name in single or double quotation marks.

Optional Arguments

ASCENDING
specifies to sort the class variable values in ascending order.
Alias:ASCEND
Interaction:PROC TABULATE issues a warning message if you specify both ASCENDING and DESCENDING and ignores both options.
DESCENDING
specifies to sort the class variable values in descending order.
Alias:DESCEND
Default:ASCENDING
Interaction:PROC TABULATE issues a warning message if you specify both ASCENDING and DESCENDING and ignores both options.
EXCLUSIVE
excludes from tables and output data sets all combinations of class variables that are not found in the preloaded range of user-defined formats.
Requirement:You must specify the PRELOADFMT option in the CLASS statement to preload the class variable formats.
GROUPINTERNAL
specifies not to apply formats to the class variables when PROC TABULATE groups the values to create combinations of class variables.
Interactions:If you specify the PRELOADFMT option in the CLASS statement, then PROC TABULATE ignores the GROUPINTERNAL option and uses the formatted values.

If you specify the ORDER=FORMATTED option, then PROC TABULATE ignores the GROUPINTERNAL option and uses the formatted values.

Tip:This option saves computer resources when the class variables contain discrete numeric values.
MISSING
considers missing values as valid class variable levels. Special missing values that represent numeric values (the letters A through Z and the underscore (_) character) are each considered as a separate value.
Default:If you omit MISSING, then PROC TABULATE excludes the observations with any missing CLASS variable values from tables and output data sets.
See:Creating Special Missing Values in SAS Language Reference: Concepts for a discussion of missing values with special meanings.
MLF
enables PROC TABULATE to use the format label or labels for a given range or overlapping ranges to create subgroup combinations when a multilabel format is assigned to a class variable.
Note: When the formatted values overlap, one internal class variable value maps to more than one class variable subgroup combination. Therefore, the sum of the N statistics for all subgroups is greater than the number of observations in the data set (the overall N statistic).
Requirement:You must use PROC FORMAT and the MULTILABEL option in the VALUE statement to create a multilabel format.
Interactions:Using MLF with ORDER=FREQ might not produce the order that you expect for the formatted values.

When you specify MLF, the formatted values of the class variable become internal values. Therefore, specifying ORDER=FORMATTED produces the same results as specifying ORDER=UNFORMATTED.

Tip:If you omit MLF, then PROC TABULATE uses the primary format labels, which correspond to the first external format value, to determine the subgroup combinations.
See:MULTILABEL in the VALUE statement of the FORMAT procedure.
ORDER=DATA | FORMATTED | FREQ | UNFORMATTED
specifies the order to group the levels of the class variables in the output, where
DATA
orders values according to their order in the input data set.
Interaction:If you use PRELOADFMT, then the order for the values of each class variable matches the order that PROC FORMAT uses to store the values of the associated user-defined format. If you use the CLASSDATA= option in the PROC statement, then PROC TABULATE uses the order of the unique values of each class variable in the CLASSDATA= data set to order the output levels. If you use both options, then PROC TABULATE first uses the user-defined formats to order the output. If you omit EXCLUSIVE in the PROC statement, then PROC TABULATE places, in the order in which they are encountered, the unique values of the class variables that are in the input data set after the user-defined format and the CLASSDATA= values.
Tip:By default, PROC FORMAT stores a format definition in sorted order. Use the NOTSORTED option to store the values or ranges of a user-defined format in the order in which you define them.
FORMATTED
orders values by their ascending formatted values. This order depends on your operating environment.
Alias:FMT | EXTERNAL
FREQ
orders values by descending frequency count.
Interaction:Use the ASCENDING option to order values by ascending frequency count.
UNFORMATTED
orders values by their unformatted values, which yields the same order as PROC SORT. This order depends on your operating environment. This sort sequence is particularly useful for displaying dates chronologically.
Alias:UNFMT | INTERNAL
Default:UNFORMATTED
Interaction:If you use the PRELOADFMT option in the CLASS statement, then PROC TABULATE orders the levels by the order of the values in the user-defined format.
Tip:By default, all orders except FREQ are ascending. For descending orders, use the DESCENDING option.
PRELOADFMT
specifies that all formats are preloaded for the class variables.
Requirement:PRELOADFMT has no effect unless you specify EXCLUSIVE, ORDER=DATA, or PRINTMISS and you assign formats to the class variables. If you specify PRELOADFMT without also specifying EXCLUSIVE, ORDER=DATA, or PRINTMISS, then SAS writes a warning message to the SAS log.
Interactions:To limit PROC TABULATE output to the combinations of formatted class variable values present in the input data set, use the EXCLUSIVE option in the CLASS statement.

To include all ranges and values of the user-defined formats in the output, use the PRINTMISS option in the TABLE statement. Use care when you use PRELOADFMT with PRINTMISS. This feature creates all possible combinations of formatted class variables. Some of these combinations might not make sense.

STYLE=<style-element-name|<PARENT>>[style-attribute-name=style-attribute-value<… style-attribute-name=style-attribute-value>]
specifies the style element to use for page dimension text and class variable name headings. For more information about the arguments for this option and how it is used, see STYLE= in the PROC TABULATE statement.
Note: The use of STYLE= in the CLASS statement differs slightly from its use in the PROC TABULATE statement. In the CLASS statement, inheritance is different for rows and columns. For rows, the parent heading is located to the left of the current heading. For columns, the parent heading is located above the current heading.
Note: If a page dimension expression contains multiple nested elements, then the Beforecaption style element is the style element of the first element in the nesting.
Alias:S=
Restriction:This option affects only the HTML, RTF, and Printer destinations.
Tips:To override a style element that is specified for page dimension text in the CLASS statement, you can specify a style element in the TABLE statement page dimension expression.

To override a style element that is specified for a class variable name heading in the CLASS statement, you can specify a style element in the related TABLE statement dimension expression.

Details

How PROC TABULATE Handles Missing Values for Class Variables

By default, if an observation contains a missing value for any class variable, then PROC TABULATE excludes that observation from all tables that it creates. CLASS statements apply to all TABLE statements in the PROC TABULATE step. Therefore, if you define a variable as a class variable, then PROC TABULATE omits observations that have missing values for that variable from every table even if the variable does not appear in the TABLE statement for one or more tables.
If you specify the MISSING option in the PROC TABULATE statement, then the procedure considers missing values as valid levels for all class variables. If you specify the MISSING option in a CLASS statement, then PROC TABULATE considers missing values as valid levels for the class variables that are specified in that CLASS statement.