SORTNDX Call
creates an index to reorder a matrix by specified columns
- CALL SORTNDX( index, matrix, by<, descend >)
The SORTNDX call returns the following value:
- index
- is a vector such that index[] is the row index
of the th element of matrix when sorted according to by and
descend. Consequently, matrix[index, ] is the sorted matrix.
The inputs to the SORTNDX call are as follows:
- matrix
- is the input matrix, which is not modified by the call.
- by
- is either a numeric matrix of column numbers, or a character
matrix containing the names of columns corresponding to
column labels assigned to matrix by a MATTRIB statement
or READ statement.
- descend
- is an optional matrix, indicating which columns, if any,
should be descending order. Any by columns not specified
as descending will be ascending. If descend = by, then all
by columns will be descending; if descend is skipped
or is a null matrix, then all by columns will be ascending.
The SORTNDX call can be used to process the rows of a matrix in different
sorted order, without having to actually modify it.
For example, the following statements result in the output shown:
m = { 1 1 0,
2 0 0,
1 3 1,
2 2 2 };
call SORTNDX( ndx, m, {1 3}, {3} );
NDX
3
1
4
2
The matrix can be physically sorted with the
SORT call), as follows:
call SORTNDX( ndx, m, by );
m = m[ndx,];
The SORTNDX call can be used with the UNIQUEBY function
to extract the unique combinations of values in the by columns.
Copyright © 2009 by SAS Institute Inc., Cary, NC, USA. All rights reserved.