sortrows

Сортировка строк массива или таблицы

Описание

пример

B = sortrows(A) сортирует строки матрицы в порядке возрастания на основе элементов первого столбца. Когда первый столбец содержит повторяющиеся элементы, sortrows сортирует согласно значениям в следующем столбце и повторяет это поведение для последующих равных значений.

пример

B = sortrows(A,column) сортировки A на основе столбцов, заданных в векторе column. Для примера, sortrows(A,4) сортирует строки A в порядке возрастания на основе элементов четвертого столбца. sortrows(A,[4 6]) сначала сортирует строки A на основе элементов в четвертом столбце, затем на основе элементов в шестом столбце для разрыва связей.

пример

B = sortrows(___,direction) сортирует строки A в порядке, заданном direction для любого из предыдущих синтаксисов. direction можно 'ascend' (по умолчанию) для порядка возрастания или 'descend' для порядка убывания. direction может также быть массивом ячеек, элементы которого 'ascend' и 'descend', где каждый элемент соответствует столбцу, который sortrows действует на. Для примера, sortrows(A,[4 6],{'ascend' 'descend'}) сортирует строки A в порядке возрастания на основе четвертого столбца, затем в порядке убывания на основе шестого столбца для разрыва связей.

пример

B = sortrows(___,Name,Value) задает дополнительные параметры для сортировки строк. Для примера, sortrows(A,'ComparisonMethod','abs') сортирует элементы A по величине.

пример

[B,index] = sortrows(___) также возвращает вектор индекса, который описывает перестройку строк таким образом, что B = A(index,:).

пример

tblB = sortrows(tblA) сортировка строк таблицы в порядке возрастания на основе значений первой переменной. Если элементы первой переменной повторяются, то sortrows сортирует по элементам второй переменной и так далее.

Если tblA является расписанием, тогда sortrows сортирует строки tblA в порядке возрастания на основе времени его строки. Строки расписания помечают строки по первой размерности расписания.

пример

tblB = sortrows(tblA,'RowNames') сортировка таблицы на основе имен ее строк. Имена строк таблицы помечаются строками первой размерности таблицы. Если tblA не имеет имен строк, то есть, если tblA.Properties.RowNames пуст, тогда sortrows возвращает tblA.

Этот синтаксис не поддерживается при tblA является расписанием.

пример

tblB = sortrows(tblA,rowDimName) сортировки tblA по меткам строк rowDimName по первой размерности.

  • Если tblA является таблицей, затем метки строк являются именами строк.

  • Если tblA является расписанием, тогда метки строк являются временами строк.

пример

tblB = sortrows(tblA,vars) сортирует таблицу по элементам переменных, заданным в vars. Для примера, sortrows(tblA,{'Var1','Var2'}) сначала сортирует строки tblA на основе элементов в Var1, затем элементами в Var2.

  • Если tblA является таблицей и имеет имена строк, затем vars может включать имена строк.

  • Если tblA является расписанием, тогда vars может включать время строки.

пример

tblB = sortrows(___,direction) сортировки tblA в порядке, заданном direction для любого из синтаксисов предыдущей таблицы. direction можно 'ascend' или 'descend', который применяется ко всем заданным переменным, именам строк или временам строк, которые sortrows действует на. direction может также быть массивом ячеек, элементы которого 'ascend' и 'descend', где каждый элемент соответствует заданным переменным, именам строк или временам строк, отсортированным по.

пример

tblB = sortrows(___,Name,Value) задает дополнительные параметры для сортировки строк таблицы или расписания. Для примера, sortrows(tblA,'Var1','MissingPlacement','first') сортировки на основе элементов в Var1, упорядочивание отсутствующих элементов, таких как NaN в начале таблицы.

пример

[tblB,index] = sortrows(___) также возвращает вектор индекса, такой что tblB = tblA(index,:).

Примеры

свернуть все

Создайте матрицу и отсортируйте ее строки в порядке возрастания на основе элементов первого столбца. Когда первый столбец содержит повторяющиеся элементы, sortrows просматривает элементы во втором столбце, чтобы разорвать связь. Для повторяющихся элементов во втором столбце, sortrows смотрит на третий столбец и так далее.

rng default;
A = floor(rand([6 7])*100);
A(1:4,1) = 95;  A(5:6,1) = 76;  A(2:4,2) = 7;  A(3,3) = 48
A = 6×7

    95    27    95    79    67    70    69
    95     7    48    95    75     3    31
    95     7    48    65    74    27    95
    95     7    14     3    39     4     3
    76    15    42    84    65     9    43
    76    97    91    93    17    82    38

B = sortrows(A) 
B = 6×7

    76    15    42    84    65     9    43
    76    97    91    93    17    82    38
    95     7    14     3    39     4     3
    95     7    48    65    74    27    95
    95     7    48    95    75     3    31
    95    27    95    79    67    70    69

Сортировка строк A на основе значений во втором столбце. Когда указанный столбец имеет повторяющиеся элементы, соответствующие строки поддерживают свой исходный порядок.

C = sortrows(A,2)
C = 6×7

    95     7    48    95    75     3    31
    95     7    48    65    74    27    95
    95     7    14     3    39     4     3
    76    15    42    84    65     9    43
    95    27    95    79    67    70    69
    76    97    91    93    17    82    38

Сортировка строк A на основе элементов в первом столбце и посмотрите на седьмой столбец, чтобы разорвать любые связи.

D = sortrows(A,[1 7])
D = 6×7

    76    97    91    93    17    82    38
    76    15    42    84    65     9    43
    95     7    14     3    39     4     3
    95     7    48    95    75     3    31
    95    27    95    79    67    70    69
    95     7    48    65    74    27    95

Сортировка строк A в порядке убывания на основе элементов в четвертом столбце и отобразить выходной вектор index чтобы увидеть, как строки были переставлены.

[E,index] = sortrows(A,4,'descend')
E = 6×7

    95     7    48    95    75     3    31
    76    97    91    93    17    82    38
    76    15    42    84    65     9    43
    95    27    95    79    67    70    69
    95     7    48    65    74    27    95
    95     7    14     3    39     4     3

index = 6×1

     2
     6
     5
     1
     3
     4

Создайте матрицу, содержащую комплексные числа, и отсортируйте строки матрицы в порядке возрастания на основе элементов в первом столбце. Поскольку величины A(1,1) и A(3,1) равны, sortrows вычисляет их углы, чтобы сломать галстук.

A = [1+2i 3+i i; 2+10i 6i 2+5i; 2+i 4 3+3i]
A = 3×3 complex

   1.0000 + 2.0000i   3.0000 + 1.0000i   0.0000 + 1.0000i
   2.0000 +10.0000i   0.0000 + 6.0000i   2.0000 + 5.0000i
   2.0000 + 1.0000i   4.0000 + 0.0000i   3.0000 + 3.0000i

B = sortrows(A)
B = 3×3 complex

   2.0000 + 1.0000i   4.0000 + 0.0000i   3.0000 + 3.0000i
   1.0000 + 2.0000i   3.0000 + 1.0000i   0.0000 + 1.0000i
   2.0000 +10.0000i   0.0000 + 6.0000i   2.0000 + 5.0000i

angle(A(1,1))
ans = 1.1071
angle(A(3,1))
ans = 0.4636

Используйте 'real' опция для сортировки строк A по их реальной части. С A(2,1) и A(3,1) имеют равные действительные части, sortrows использует воображаемую деталь, чтобы разорвать галстук.

C = sortrows(A,'ComparisonMethod','real')
C = 3×3 complex

   1.0000 + 2.0000i   3.0000 + 1.0000i   0.0000 + 1.0000i
   2.0000 + 1.0000i   4.0000 + 0.0000i   3.0000 + 3.0000i
   2.0000 +10.0000i   0.0000 + 6.0000i   2.0000 + 5.0000i

imag(A(2,1))
ans = 10
imag(A(3,1))
ans = 1

Создайте массив ячеек 6 на 2 из векторов символов и отсортируйте его строки. Результатом является алфавитный список, отсортированный по стране и имени.

A = {'Germany' 'Lukas'; 'USA' 'William'; 'USA' 'Andrew'; ...
'Germany' 'Andreas'; 'USA' 'Olivia'; 'Germany' 'Julia'} 
A = 6x2 cell
    {'Germany'}    {'Lukas'  }
    {'USA'    }    {'William'}
    {'USA'    }    {'Andrew' }
    {'Germany'}    {'Andreas'}
    {'USA'    }    {'Olivia' }
    {'Germany'}    {'Julia'  }

B = sortrows(A)
B = 6x2 cell
    {'Germany'}    {'Andreas'}
    {'Germany'}    {'Julia'  }
    {'Germany'}    {'Lukas'  }
    {'USA'    }    {'Andrew' }
    {'USA'    }    {'Olivia' }
    {'USA'    }    {'William'}

Сначала отсортируйте страны, а затем отсортируйте имена в порядке убывания.

C = sortrows(A,[1 2],{'ascend' 'descend'})
C = 6x2 cell
    {'Germany'}    {'Lukas'  }
    {'Germany'}    {'Julia'  }
    {'Germany'}    {'Andreas'}
    {'USA'    }    {'William'}
    {'USA'    }    {'Olivia' }
    {'USA'    }    {'Andrew' }

Сортировка строк таблицы по значениям переменных.

Составьте таблицу с четырьмя переменными, содержащими информацию о пациентах для пяти человек.

LastName = {'Smith';'Johnson';'Williams';'Jones';'Brown'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];

tblA = table(Age,Height,Weight,BloodPressure,'RowNames',LastName)
tblA=5×4 table
                Age    Height    Weight    BloodPressure
                ___    ______    ______    _____________

    Smith       38       71       176       124     93  
    Johnson     43       69       163       109     77  
    Williams    38       64       131       125     83  
    Jones       40       67       133       117     75  
    Brown       49       64       119       122     80  

Отсортируйте строки таблицы. The sortrows функция сортирует строки в порядке возрастания сначала по переменной Ageа затем по переменной Height чтобы разорвать галстук между двумя строками с одинаковыми возрастами.

tblB = sortrows(tblA)
tblB=5×4 table
                Age    Height    Weight    BloodPressure
                ___    ______    ______    _____________

    Williams    38       64       131       125     83  
    Smith       38       71       176       124     93  
    Jones       40       67       133       117     75  
    Johnson     43       69       163       109     77  
    Brown       49       64       119       122     80  

Составьте таблицу с четырьмя переменными, содержащими информацию о пациентах для пяти человек.

LastName = {'Smith';'Johnson';'Williams';'Jones';'Brown'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];

tblA = table(Age,Height,Weight,BloodPressure,'RowNames',LastName)
tblA=5×4 table
                Age    Height    Weight    BloodPressure
                ___    ______    ______    _____________

    Smith       38       71       176       124     93  
    Johnson     43       69       163       109     77  
    Williams    38       64       131       125     83  
    Jones       40       67       133       117     75  
    Brown       49       64       119       122     80  

Отсортируйте строки таблицы в порядке возрастания на основе имен строк и верните вектор индекса, который описывает, как строки были переставлены.

[tblB,index] = sortrows(tblA,'RowNames')
tblB=5×4 table
                Age    Height    Weight    BloodPressure
                ___    ______    ______    _____________

    Brown       49       64       119       122     80  
    Johnson     43       69       163       109     77  
    Jones       40       67       133       117     75  
    Smith       38       71       176       124     93  
    Williams    38       64       131       125     83  

index = 5×1

     5
     2
     4
     1
     3

Составьте таблицу с четырьмя переменными, содержащими информацию о пациентах для пяти человек.

LastName = {'Sweet';'Jacobson';'Wang';'Joiner';'Berger'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];

tblA = table(Age,Height,Weight,BloodPressure,'RowNames',LastName)
tblA=5×4 table
                Age    Height    Weight    BloodPressure
                ___    ______    ______    _____________

    Sweet       38       71       176       124     93  
    Jacobson    43       69       163       109     77  
    Wang        38       64       131       125     83  
    Joiner      40       67       133       117     75  
    Berger      49       64       119       122     80  

Сортировка строк таблицы в порядке возрастания по Height, а затем в порядке убывания по Weight.

tblB = sortrows(tblA,{'Height','Weight'},{'ascend','descend'})
tblB=5×4 table
                Age    Height    Weight    BloodPressure
                ___    ______    ______    _____________

    Wang        38       64       131       125     83  
    Berger      49       64       119       122     80  
    Joiner      40       67       133       117     75  
    Jacobson    43       69       163       109     77  
    Sweet       38       71       176       124     93  

Составьте таблицу с четырьмя переменными, содержащими информацию о пациентах для пяти человек. The Weight переменная содержит отсутствующие значения.

LastName = {'Sweet';'Jacobson';'Wang';'Joiner';'Berger'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;NaN;131;133;NaN];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
tblA = table(Age,Height,Weight,BloodPressure,'RowNames',LastName)
tblA=5×4 table
                Age    Height    Weight    BloodPressure
                ___    ______    ______    _____________

    Sweet       38       71       176       124     93  
    Jacobson    43       69       NaN       109     77  
    Wang        38       64       131       125     83  
    Joiner      40       67       133       117     75  
    Berger      49       64       NaN       122     80  

Сортировка строк таблицы в порядке возрастания по Weight, размещение строк, содержащих NaN во-первых.

tblB = sortrows(tblA,'Weight','MissingPlacement','first')
tblB=5×4 table
                Age    Height    Weight    BloodPressure
                ___    ______    ______    _____________

    Jacobson    43       69       NaN       109     77  
    Berger      49       64       NaN       122     80  
    Wang        38       64       131       125     83  
    Joiner      40       67       133       117     75  
    Sweet       38       71       176       124     93  

Составьте расписание и отсортируйте строки по строкам раз.

TimeDuration = [hours(3) hours(2) hours(1) hours(5) hours(6)]';
TT = timetable(TimeDuration,[98;97.5;97.9;98.1;101],[120;111;119;117;118]);
           
B = sortrows(TT,'TimeDuration')
B=5×2 timetable
    TimeDuration    Var1    Var2
    ____________    ____    ____

    1 hr            97.9    119 
    2 hr            97.5    111 
    3 hr              98    120 
    5 hr            98.1    117 
    6 hr             101    118 

Входные параметры

свернуть все

Вход массив, заданный как вектор-столбец или матрица.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | cell | categorical | datetime | duration
Поддержка комплексного числа: Да

Вектор сортировки столбцов, заданный как ненулевой целочисленный скаляр или вектор ненулевых целых чисел. Каждое заданное целое значение указывает столбец для сортировки. Отрицательные целые числа указывают, что порядок сортировки уменьшается.

Направление сортировки, заданное как вектор символов или массив ячеек векторов символов, содержащих 'ascend' (по умолчанию) или 'descend'. Если direction - массив ячеек из векторов символов, тогда количество записей должно совпадать с количеством столбцов или переменных, сортируемых по.

Если на column аргумент и direction аргумент задается вместе, затем sortrows сортировки по direction, игнорируя знаки элементов в column.

Типы данных: char | cell

Входная таблица, заданная как таблица или расписание. Каждая переменная в tblA должен быть допустимым входом для sort или sortrows.

Типы данных : table | timetable

Имя первой размерности таблицы входа или расписания, заданное как вектор символов.

  • Если tblA - таблица с именами строк, затем rowDimName - имя первой размерности таблицы. По умолчанию имя первой размерности 'Row'. Имена размерностей являются свойством таблиц. Вы можете получить доступ к именам размерностей tblA использование tblA.Properties.DimensionNames.

  • Если tblA является расписанием, тогда rowDimName - имя вектора времени строки. При создании расписания можно задать его имя, например Time или Date. Вы также можете получить доступ к именам размерностей, используя tblA.Properties.DimensionNames.

Пример: Если таблица T имеет имена строк, и вы изменили имя первой размерности используя T.Properties.DimensionName{1} = 'Name', затем sortrows(T,'Name') сортировка таблицы по имени строки.

Пример: Если расписание TT имеет временной вектор с именем Date, затем sortrows(TT,'Date') сортирует расписание по датам и временам, которые Date содержит.

Типы данных: char

Переменные сортировки, заданные как скалярное целое число, вектор из целых чисел, имя переменной, массив ячеек с именами переменных или логический вектор. vars указывает на табличные переменные для сортировки.

Если элемент vars является положительным целым числом, тогда sortrows сортирует соответствующую переменную в tblA в порядке возрастания. Если элемент vars является отрицательным целым числом, тогда sortrows сортирует соответствующую переменную в tblA в порядке убывания.

Пример: sortrows(tblA,{'Height','Weight'}) сортирует строки tblA в порядке возрастания, сначала переменной Height, затем переменной Weight чтобы разорвать связи.

Пример: sortrows(tblA,[1 4]) сортирует по первой переменной tblA в порядке возрастания, затем сортирует по четвертой переменной, чтобы разорвать связи.

Пример: sortrows(TT,{'Time','X'}) сортирует строки расписания TT в порядке возрастания сначала сортирует по табличной переменной 'X' чтобы разорвать связи.

Типы данных: double | single | char | cell | logical

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: sortrows(A,'MissingPlacement','last')

Размещение отсутствующих значений (NaN, NaT, <undefined>, и missing) задается как разделенная разделенными запятой парами, состоящая из 'MissingPlacement' и одно из следующих:

  • 'auto' - Отсутствующие элементы помещаются последними в порядке возрастания и сначала в порядке убывания.

  • 'first' - Отсутствующие элементы помещаются первыми.

  • 'last' - Отсутствующие элементы помещаются последними.

Метод сравнения элементов, заданный как разделенная разделенными запятой парами, состоящая из 'ComparisonMethod' и одно из следующих:

  • 'auto' - Сортировка строк A по real(A) когда A реально, и сортировать по abs(A) когда A комплексная.

  • 'real' - Сортировка строк A по real(A) когда A является реальным или комплексным. Если столбец A имеет элементы с равными вещественными частями, затем используйте imag(A) чтобы разорвать связи.

  • 'abs' - Сортировка строк A по abs(A) когда A является реальным или комплексным. Если столбец A имеет элементы с равной величиной, затем используйте angle(A) в интервале (-

Выходные аргументы

свернуть все

Отсортированный массив, возвращенный как векторный, матричный или многомерный массив. B - тот же размер, что и A.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | cell | categorical | datetime | duration

Отсортированная таблица, возвращенная как таблица или timetable с теми же переменными, что и tblA.

Типы данных : table | timetable

Сортировка индекса, возвращенная как вектор индекса. Индекс сортировки описывает перестройку строк во входе таким образом, что B = A(index,:).

Типы данных: double

Расширенные возможности

..

См. также

| | |

Представлено до R2006a