Main Content

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 

See Also

|