text file, variables' measurement levels are often unknown. If
@code{CTABLES} runs when a variable has an unknown measurement level,
it makes an initial pass through the data to guess measurement levels
-using the rules described earlier in this manual (@pxref{Measurement
+using the rules described in an earlier section (@pxref{Measurement
Level}). Use the @code{VARIABLE LEVEL} command to set or change a
variable's measurement level (@pxref{VARIABLE LEVEL}).
@code{MISSING=EXCLUDE} is in effect on @code{CATEGORIES}, or
system-missing values. @code{COUNT} does not count these.
+@xref{CTABLES Missing Values for Summary Variables}, for details of
+how @code{CTABLES} summarizes missing values.
+
@item @code{VALIDN} (``Valid N'', F40.0)
The sum of valid count weights in included categories.
-@code{VALIDN} does not count missing values regardless of whether they
-are in included categories via @code{CATEGORIES}. @code{VALIDN} does
-not count valid values that are in excluded categories.
+For categorical variables, @code{VALIDN} does not count missing values
+regardless of whether they are in included categories via
+@code{CATEGORIES}. @code{VALIDN} does not count valid values that are
+in excluded categories. @xref{CTABLES Missing Values for Summary
+Variables}, for details.
@item @code{VARIANCE} (``Variance'')
The variance.
@node CTABLES Summary Functions for Adjusted Weights
@subsubsection Summary Functions for Adjusted Weights
-If the @code{WEIGHT} subcommand specified an adjustment weight
-variable, then the following summary functions use its value instead
-of the dictionary weight variable. Otherwise, they are equivalent to
-the summary function without the @samp{E}-prefix:
+If the @code{WEIGHT} subcommand specified an effective weight variable
+(@pxref{CTABLES Effective Weight}), then the following summary functions
+use its value instead of the dictionary weight variable. Otherwise,
+they are equivalent to the summary function without the
+@samp{E}-prefix:
@itemize @bullet
@item
@code{UMISSING} (``Unweighted Missing'')
@item
-@code{UMODE} (``Unweight Mode'')
+@code{UMODE} (``Unweighted Mode'')
@item
@code{U@i{area}PCT.SUM} (``Unweighted @i{Area} Sum %'', PCT40.1)
@code{UVARIANCE} (``Unweighted Variance'', F40.0)
@end itemize
-@node CTABLES Summarizing Missing Values
-@subsubsection Summarizing Missing Values
-
-CTABLES treats missing values in categorical and scale variables
-differently. For categorical variables, in most cases values that are
-valid and in included categories are analyzed, and values that are
-missing or in excluded categories are not analyzed. (@xref{CTABLES
-Per-Variable Category Options}), for information on included and
-excluded categories.) The following chart, in which cells that
-contain ``yes'' indicate that a value is analyzed, and the notes below
-it give the exact rules:
-
-@multitable {@headitemfont{System-Missing}} {Included Category} {Excluded Category}
-@headitem @tab Included Category @tab Excluded Category
-@item @headitemfont{Valid} @tab yes @tab ---
-@item @headitemfont{User-Missing} @tab yes [*] @tab --- [+]
-@item @headitemfont{System-Missing} @tab n/a [#] @tab --- [+]
-@end multitable
-
-@table @asis
-@item [*]
-Exceptions: The ``@t{VALIDN}'' summary functions (@code{VALIDN},
-@code{EVALIDN}, @code{UVALIDN}, @code{@i{area}PCT.VALIDN}, and
-@code{U@i{area}PCT.VALIDN}), which only count valid values in included
-categories.
-
-@item [+]
-Exceptions: The ``@t{TOTALN}'' summary functions (@code{TOTALN},
-@code{ETOTALN}, @code{UTOTALN}, @code{@i{area}PCT.TOTALN}), and
-@code{U@i{area}PCT.TOTALN}, which count all values (valid and missing)
-in included categories and missing (but not valid) values in excluded
-categories.
-
-@item [#]
-System-missing values are never in included categories.
-@end table
-
-@noindent
-The following table provides another view of the same information:
-
-@multitable {Missing values in excluded categories} {@code{VALIDN}} {other} {@code{TOTALN}}
-@headitem @tab @code{VALIDN} @tab other @tab @code{TOTALN}
-@item Valid values in included categories @tab yes @tab yes @tab yes
-@item Missing values in included categories @tab --- @tab yes @tab yes
-@item Missing values in excluded categories @tab --- @tab --- @tab yes
-@item Valid values in excluded categories @tab --- @tab --- @tab ---
-@end multitable
-
@node CTABLES Statistics Positions and Labels
@subsection Statistics Positions and Labels
@t{VARIABLES} is required and must list the variables for the subcommand
to affect.
-There are two way to specify the Categories to include and their sort
-order:
+The syntax may specify the categories to include and their sort order
+either explicitly or implicitly. The following sections give the
+details of each form of syntax, followed by information on totals and
+subtotals and the @code{EMPTY} setting.
+
+@node CTABLES Explicit Categories
+@subsubsection Explicit Categories
-@table @asis
-@item Explicit categories.
@anchor{CTABLES Explicit Category List}
-To explicitly specify categories to include, list the categories
-within square brackets in the desired sort order. Use spaces or
-commas to separate values. Categories not covered by the list are
-excluded from analysis.
+
+To use @code{CTABLES} to explicitly specify categories to include,
+list the categories within square brackets in the desired sort order.
+Use spaces or commas to separate values. Categories not covered by
+the list are excluded from analysis.
Each element of the list takes one of the following forms:
@item &@i{postcompute}
A computed category name (@pxref{CTABLES Computed Categories}).
+
+@item SUBTOTAL
+@itemx HSUBTOTAL
+A subtotal (@pxref{CTABLES Totals and Subtotals}).
@end table
-Additional forms, described later, allow for subtotals.
If multiple elements of the list cover a given category, the last one
in the list takes precedence.
-@item Implicit categories.
-Without an explicit list of categories, @pspp{} sorts
-categories automatically.
+@c TODO example
+
+@node CTABLES Implicit Categories
+@subsubsection Implicit Categories
+
+In the absence of an explicit list of categories, @code{CATEGORIES}
+allows @code{KEY}, @code{ORDER}, and @code{MISSING} to specify how to
+select and sort categories.
The @code{KEY} setting specifies the sort key. By default, or with
@code{KEY=VALUE}, categories are sorted by default. Categories may
User-missing values are excluded by default, or with
@code{MISSING=EXCLUDE}. Specify @code{MISSING=INCLUDE} to include
user-missing values. The system-missing value is always excluded.
-@end table
-@subsubheading Totals and Subtotals
+@c TODO example
+
+@node CTABLES Totals and Subtotals
+@subsubsection Totals and Subtotals
-@code{CATEGORIES} also controls display of totals and subtotals.
-Totals are not displayed with @code{TOTAL=NO}, which is also the
-default. Specify @code{TOTAL=YES} to display a total. By default,
-the total is labeled ``Total''; use @code{LABEL="@i{label}"} to
-override it.
+@code{CATEGORIES} also controls display of totals and subtotals. By
+default, or with @code{TOTAL=NO}, totals are not displayed. Use
+@code{TOTAL=YES} to display a total. By default, the total is labeled
+``Total''; use @code{LABEL="@i{label}"} to override it.
Subtotals are also not displayed by default. To add one or more
subtotals, use an explicit category list and insert @code{SUBTOTAL} or
@code{HSUBTOTAL} in the position or positions where the subtotal
-should appear. With @code{SUBTOTAL}, the subtotal becomes an extra
-row or column or layer; @code{HSUBTOTAL} additionally hides the
-categories that make up the subtotal. Either way, the default label
-is ``Subtotal'', use @code{SUBTOTAL="@i{label}"} or
-@code{HSUBTOTAL="@i{label}"} to specify a custom label.
+should appear. The subtotal becomes an extra row or column or layer.
+@code{HSUBTOTAL} additionally hides the categories that make up the
+subtotal. Either way, the default label is ``Subtotal'', use
+@code{SUBTOTAL="@i{label}"} or @code{HSUBTOTAL="@i{label}"} to specify
+a custom label.
+
+@c TODO
By default, or with @code{POSITION=AFTER}, totals are displayed in the
output after the last category and subtotals apply to categories that
precede them. With @code{POSITION=BEFORE}, totals come before the
first category and subtotals apply to categories that follow them.
+@c TODO
+
Only categorical variables may have totals and subtotals. Scalar
variables may be ``totaled'' indirectly by enabling totals and
subtotals on a categorical variable within which the scalar variable is
summarized.
-@c TODO Specifying summaries for totals and subtotals
+@c TODO
+
+By default, @pspp{} uses the same summary functions for totals and
+subtotals as other categories. To summarize totals and subtotals
+differently, specify the summary functions for totals and subtotals
+after the ordinary summary functions inside a nested set of @code{[]}
+following @code{TOTALS}. For example, the following syntax displays
+@code{COUNT} for individual categories and totals and @code{VALIDN}
+for totals, as shown:
+
+@example
+CTABLES
+ /TABLE qnd7a [COUNT, TOTALS[COUNT, VALIDN]]
+ /CATEGORIES VARIABLES=qnd7a TOTAL=YES MISSING=INCLUDE.
+@end example
+@psppoutput {ctables26}
-@subsubheading Categories Without Values
+@node CTABLES Categories Without Values
+@subsubsection Categories Without Values
Some categories might not be included in the data set being analyzed.
For example, our example data set has no cases in the ``15 or
values with value labels that are covered by ranges or @code{MISSING}
or @code{OTHERNM}.
+@c TODO
+
@node CTABLES Titles
@subsection Titles
specified, @code{MAXCOLWIDTH} must be greater than or equal to
@code{MINCOLWIDTH}. The default unit, or with @code{UNITS=POINTS}, is
points (1/72 inch), or specify @code{UNITS=INCHES} to use inches or
-@code{UNITS=CM} for centimeters.
+@code{UNITS=CM} for centimeters. @pspp{} does not currently honor any
+of these settings.
By default, or with @code{EMPTY=ZERO}, zero values are displayed in
their usual format. Use @code{EMPTY=BLANK} to use an empty cell
Show nothing.
@end table
+@c TODO example
+
@node CTABLES Missing Value Treatment
@subsection Missing Value Treatment
+The @code{TABLE} subcommand on @code{CTABLES} specifies two different
+kinds of variables: variables that divide tables into cells (which are
+always categorical) and variables being summarized (which may be
+categorical or scale). @pspp{} treats missing values differently in
+each kind of variable:
+
+@itemize @bullet
+@item
+For variables that divide tables into cells, per-variable category
+options determine which data is analyzed. If any of the categories
+for such a variable would exclude a case, then that case is not
+included.
+
+@item
+The treatment of missing values in variables being summarized varies
+between scale and scale and categorical variables. The following
+section describes their treatment in detail.
+
+By default, each summarized variable is considered separately for
+missing value treatment. A section below describes how to consider
+missing values listwise for summarizing scale variables.
+@end itemize
+
+@c TODO example
+
+@node CTABLES Missing Values for Summary Variables
+@subsubsection Missing Values for Summary Variables
+
+For summary variables, values that are valid and in included
+categories are analyzed, and values that are missing or in excluded
+categories are not analyzed, with the following exceptions:
+
+@itemize @bullet
+@item
+The ``@t{VALIDN}'' summary functions (@code{VALIDN}, @code{EVALIDN},
+@code{UVALIDN}, @code{@i{area}PCT.VALIDN}, and
+@code{U@i{area}PCT.VALIDN}) only count valid values in included
+categories (not missing values in included categories).
+
+@item
+The ``@t{TOTALN}'' summary functions (@code{TOTALN}, @code{ETOTALN},
+@code{UTOTALN}, @code{@i{area}PCT.TOTALN}), and
+@code{U@i{area}PCT.TOTALN} count all values (valid and missing) in
+included categories and missing (but not valid) values in excluded
+categories.
+@end itemize
+
+@noindent
+For categorical variables, system-missing values are never in included
+categories. For scale variables, there is no notion of included and
+excluded categories, so all values are effectively included.
+
+The following table provides another view of the above rules:
+
+@multitable {@w{ }@w{ }@w{ }@w{ }Missing values in excluded categories} {@t{VALIDN}} {other} {@t{TOTALN}}
+@headitem @tab @t{VALIDN} @tab other @tab @t{TOTALN}
+@item @headitemfont{Categorical variables:}
+@item @w{ }@w{ }@w{ }@w{ }Valid values in included categories @tab yes @tab yes @tab yes
+@item @w{ }@w{ }@w{ }@w{ }Missing values in included categories @tab --- @tab yes @tab yes
+@item @w{ }@w{ }@w{ }@w{ }Missing values in excluded categories @tab --- @tab --- @tab yes
+@item @w{ }@w{ }@w{ }@w{ }Valid values in excluded categories @tab --- @tab --- @tab ---
+@item @headitemfont{Scale variables:}
+@item @w{ }@w{ }@w{ }@w{ }Valid values @tab yes @tab yes @tab yes
+@item @w{ }@w{ }@w{ }@w{ }User- or system-missing values @tab --- @tab yes @tab yes
+@end multitable
+
+@node CTABLES Scale Missing Values
+@subsubsection Scale Missing Values
+
@display
@t{/SMISSING} @{@t{VARIABLE} @math{|} @t{LISTWISE}@}
@end display
@code{PCOMPUTE} redefines a postcompute with the same name as an
earlier one, the later one take precedence.
+@c TODO example
+
@node CTABLES Computed Category Properties
@subsection Computed Category Properties
output. The default label for a postcompute is the expression used to
define it.
-The @code{FORMAT} setting sets summary statistics and display formats
-for the postcomputes.
+A postcompute always uses same summary functions as the variable whose
+categories contain it, but @code{FORMAT} allows control over the
+format used to display their values. It takes a list of summary
+function names and format specifiers.
By default, or with @code{HIDESOURCECATS=NO}, categories referred to
by computed categories are displayed like other categories. Use
@code{HIDESOURCECATS=YES} to hide them.
-@node CTABLES Base Weight
-@subsection Base Weight
+@c TODO example
+
+@node CTABLES Effective Weight
+@subsection Effective Weight
@display
@t{/WEIGHT VARIABLE=}@i{variable}
The @code{WEIGHT} subcommand is optional and must appear before
@code{TABLE}. If it appears, it must name a numeric variable, known
-as the @dfn{effective base weight} or @dfn{adjustment weight}. The
-effective base weight variable stands in for the dictionary's weight
+as the @dfn{effective weight} or @dfn{adjustment weight}. The
+effective weight variable stands in for the dictionary's weight
variable (@pxref{WEIGHT}), if any, in most calculations in
@code{CTABLES}. The only exceptions are the @code{COUNT},
@code{TOTALN}, and @code{VALIDN} summary functions, which use the
dictionary weight instead.
Weights obtained from the @pspp{} dictionary are rounded to the
-nearest integer at the case level. Effective base weights are not
-rounded. Regardless of the weighting source, @pspp{} does not analyze
-cases with zero, missing, or negative effective weights.
+nearest integer at the case level. Effective weights are not rounded.
+Regardless of the weighting source, @pspp{} does not analyze cases
+with zero, missing, or negative effective weights.
@node CTABLES Hiding Small Counts
@subsection Hiding Small Counts
value of @i{count} must be an integer and must be at least 2. Case
weights are considered for deciding whether to hide a count.
+@c TODO example
+
@node FACTOR
@section FACTOR