Sorts tables so their margins are in ascending or descending order (R.W. Payne).

### Options

`PRINT` = string tokens |
Controls output (`tables` , `histograms` ); default `*` i.e. none |
---|---|

`DIRECTION` = string token |
Direction of sorting (`ascending` , `descending` ); default `asce` |

`METHOD` = string token |
Method to use to construct a marginal table for the sorting of a factor when there is no one-way table classified by the factor in the `TABLE` list, and the first table in the `TABLE` list classified by the factor has no margins (`totals` , `means` , `minima` , `maxima` , `variances` , `medians` ); default `tota` |

`FACTORS` = pointer |
Specifies or saves a list of classifying factors of the tables in the `TABLE` list |

`NEWFACTORS` = pointer |
Specifies or saves a list of classifying factors of the new tables, corresponding to those in the `FACTORS` pointer |

`EXCLUDE` = pointer |
Factors to exclude from sorting |

`NBEST` = string tokens |
Number of (best) levels to include from each sorted factor; default `*` i.e. all of them |

### Parameters

`TABLE` = tables |
Tables to be sorted |
---|---|

`NEWTABLE` = tables |
Allows the new sorted tables to be saved |

`TITLE` = texts |
Title to be used when displaying each table |

`FIELDWIDTH` = scalars |
Field width for printing each table |

`DECIMALS` = scalars |
Decimal places for each table |

### Description

This procedure sorts tables so that their margins are in a specified order. With a multi-way table, for example, this may help in interpreting an interaction from an analysis of variance. With a one-way table, it allows the cells to be displayed in ascending order, as in a Pareto chart.

The original tables are supplied by the `TABLE`

parameter. The `NEWTABLE`

parameter can be used to save the sorted tables.

If you want to specify your own ordering, the `FACTORS`

and `NEWFACTORS`

options can be set to pointers of pre-defined factors indicating the ways in which each dimension of the tables is to be sorted: `FACTORS`

contains factors from the classifying sets of the original tables, and `NEWFACTORS`

contains the corresponding factors for the new tables (with the levels in the new order).

Alternatively, you can let `TABSORT`

define the ordering. For each factor classifying the original tables, the ordering is obtained using a one-way table for that factor. This may be available amongst the list of original tables (specified by the `TABLE`

parameter). If not, `TABSORT`

finds the first table in the list with the factor in its classifying set. If the table has margins, then `TABSORT`

will extract the appropriate one-way margin. Otherwise, it first constructs the margins using the `MARGIN`

directive; the `METHOD`

option then defines how the margin is formed (using means, medians and so on). Having obtained a suitable one-way table, `TABSORT`

forms a new factor whose levels are in the order that will arrange the entries of the table in either ascending or descending order according to the setting of the `DIRECTION`

option (default `ascending`

). The `FACTORS`

and `NEWFACTORS`

options can then be used to save pointers containing the factors and reordered factors for future use. Note also, that even if you do not want to use the factors in future, you can use the pointers to specify identifiers for the new factors to be used when the tables are printed. (You must specify both of them, so that `TABSORT`

can tell how the new identifiers correspond to the original factors.) The `EXCLUDE`

option can be set to a pointer containing factors that are not to be re-ordered automatically, but should be left unchanged.

The `NBEST`

option specifies the number of levels to include from each sorted factor. So, setting `NBEST=5`

would take only the first five levels in the sorted order. This may be useful if you have a large table, and want to show only the best part of the table (as defined by the sorting of the margins). This default is to include all of the levels.

The `PRINT`

option controls the output produced by `TABSORT`

. The setting `tables`

prints the tables. The setting `histograms`

, causes any one-way tables to be plotted by the `DHISTOGRAM`

directive, and any two-way tables to be plotted by `D3HISTOGRAM`

. The `TITLE`

parameter allows you to supply a title to be used in the display of each table. The `FIELDWIDTH`

parameter specifies field widths, and the `DECIMALS`

parameter specified numbers of decimal places.

Options: `PRINT`

, `DIRECTION`

, `METHOD`

, `FACTORS`

, `NEWFACTORS`

, `EXCLUDE`

, `NBEST`

.

Parameters: `TABLE`

, `NEWTABLE`

, `TITLE`

, `FIELDWIDTH`

, `DECIMALS`

.

### Method

`TABSORT`

uses `FACSORT`

to sort the factors and `COMBINE`

to reorder the table.

### See also

Directives: `COMBINE`

, `TABLE`

, `TABULATE`

, `MARGIN`

.

Procedures: `MTABULATE`

, `SVSTRATIFIED`

, `SVTABULATE`

, `TABINSERT`

, `TABMODE`

, `T%CONTROL`

.

Commands for: Calculations and manipulation, Six sigma, Survey analysis.

### Example

CAPTION 'TABSORT example',\ 'Data from Snedecor & Cochran (1980), Statistical Methods',\ '(seventh edition), p.305.'; STYLE=meta,plain FACTOR [NVALUES=60; LABELS=!T(Beef,Cereal,Pork); VALUES=(1...3)20] Source FACTOR [NVALUES=60; LABELS=!T(High,Low); VALUES=3(1,2)10] Amount VARIATE [NVALUES=60] Gain READ Gain 73 98 94 90 107 49 102 74 79 76 95 82 118 56 96 90 97 73 104 111 98 64 80 86 81 95 102 86 98 81 107 88 102 51 74 97 100 82 108 72 74 106 87 77 91 90 67 70 117 86 120 95 89 61 111 92 105 78 58 82 : TREATMENTS Source*Amount ANOVA [PRINT=means; FPROBABILITY=yes] Gain AKEEP Source*Amount; MEANS=SourceMeans,AmountMeans,SourceByAmountMeans TABSORT [PRINT=tables] SourceMeans,AmountMeans,SourceByAmountMeans