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