sortrows
(Not Recommended) Sort rows of dataset array
The dataset
data type is not recommended. To work with heterogeneous data,
use the MATLAB®
table
data type instead. See MATLAB
table
documentation for more information.
Syntax
B = sortrows(A)
B = sortrows(A,vars)
B = sortrows(A,'obsnames')
B = sortrows(A,vars,mode)
[B,idx] = sortrows(A)
Description
B = sortrows(A)
returns a copy of the dataset
array A
, with the observations sorted in ascending order by all of
the variables in A
. The observations in B
are
sorted first by the first variable, next by the second variable, and so on. Each
variable in A
must be a valid input to sort
, or,
if a variable has multiple columns, to the MATLAB sortrows
function or to its ownsortrows
method.
B = sortrows(A,vars)
sorts the observations in
A
by the variables specified by vars
.
vars
is a positive integer, a vector of positive integers, a
character vector, a string array, a cell array of character vectors, or a logical
vector.
B = sortrows(A,'obsnames')
sorts the
observations in A
by observation name.
B = sortrows(A,vars,mode)
sorts in the
direction specified by mode
. When mode
is
'ascend'
(the default) or 'descend'
,
sortrows
sorts A
by the variables specified by
vars
in ascending or descending order, respectively.
mode
can also be a string array or cell array containing
'ascend'
or 'descend'
, to specify a different
sorting direction for each variable in vars
. Specify
[]
for vars
to sort using all
variables.
[B,idx] = sortrows(A)
also returns an index
vector idx
such that B = A(idx,:)
.
Examples
Sort the data in hospital.mat
by age and then by last name:
load hospital hospital(1:5,1:3) ans = LastName Sex Age YPL-320 'SMITH' Male 38 GLI-532 'JOHNSON' Male 43 PNI-258 'WILLIAMS' Female 38 MIJ-579 'JONES' Female 40 XLK-030 'BROWN' Female 49 hospital = sortrows(hospital,{'Age','LastName'}); hospital(1:5,1:3) ans = LastName Sex Age REV-997 'ALEXANDER' Male 25 FZR-250 'HALL' Male 25 LIM-480 'HILL' Female 25 XUE-826 'JACKSON' Male 25 SCQ-914 'JAMES' Male 25
Sort the data in hospital
by gender in ascending order, and age in
descending order.
hospital = sortrows(hospital,{'Sex','Age'},{'ascend','descend'}); hospital(1:5,1:3) ans = LastName Sex Age XLK-030 'BROWN' Female 49 GGU-691 'HUGHES' Female 49 KKL-155 'ADAMS' Female 48 HQO-561 'BRYANT' Female 48 BKD-785 'CLARK' Female 48 hospital(end-4:end,1:3) ans = LastName Sex Age VNL-702 'MOORE' Male 28 REV-997 'ALEXANDER' Male 25 FZR-250 'HALL' Male 25 XUE-826 'JACKSON' Male 25 SCQ-914 'JAMES' Male 25