topkrows

Верхние строки в сортированном порядке

Описание

пример

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

пример

B = topkrows(X,k,col) сортировка результатов по столбцам, заданным как col. Используйте этот синтаксис для последовательного выполнения нескольких сортировок столбцов. Для примера, topkrows(X,k,5) сортирует строки X в порядке убывания на основе элементов пятого столбца. topkrows(X,k,[4 6]) сначала сортирует строки в порядке убывания по элементам в четвертом столбце, а затем сортирует по элементам в шестом столбце, чтобы разорвать связи.

пример

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

Для примера, topkrows(A,2,[2 3],{'ascend' 'descend'}) получает верхние 2 строки путем первой сортировки строк в порядке возрастания по элементам столбца 2. Затем она сортирует строки с равными значениями в столбце 2 в порядке убывания по элементам в столбце 3.

пример

B = topkrows(___,'ComparisonMethod',method) задает сравнение комплексных чисел. Метод сравнения может быть 'auto', 'real', или 'abs'.

[B,I] = topkrows(X,___) также возвращает вектор индекса I который описывает порядок выбранных строк таким образом, чтобы B = X(I,:).

пример

B = topkrows(T,k) возвращает первое k строки в таблице или T расписания, в сортированном порядке. Строки таблицы находятся в убывающем сортированном порядке по всем их переменным, а строки расписания находятся в убывающем сортированном порядке по времени.

пример

B = topkrows(T,k,vars) сортирует результаты по переменным, заданным в vars. Используйте этот синтаксис для сортировки с несколькими переменными последовательно. Для примера, topkrows(T,k,{'Var1','Var2'}) сначала сортирует строки T на основе элементов в Var1и затем сортирует по элементам в Var2.

B = topkrows(T,k,vars,direction) задает направление сортировки. Для примера используйте 'ascend' для сортировки T в порядке возрастания.

B = topkrows(___,'ComparisonMethod',method) задает сравнение комплексных чисел. Метод сравнения может быть 'auto', 'real', или 'abs'.

[B,I] = topkrows(T,___) также возвращает вектор индекса I который описывает порядок выбранных строк таким образом, чтобы B = T(I,:).

Примеры

свернуть все

Отсортируйте строки матрицы с помощью различных порядков сортировки и просмотрите верхние строки.

Создайте матрицу 20 на 5 случайных целых чисел между 1 и 10.

rng default % for reproducibility
X = randi(10,20,5);

Сортировка строк X в порядке убывания и возвращает верхние 4 строки. По умолчанию topkrows сортирует с использованием первого столбца матрицы. Для всех строк, которые имеют равные элементы в конкретном столбце, сортировка основана на столбце непосредственно справа.

TA = topkrows(X,4)
TA = 4×5

    10    10     8     7     6
    10     7     8     2     4
    10     4     4     3     5
    10     3     7     9     6

При вызове с тремя входными параметрами topkrows основывает сортировку полностью на столбце, указанном в третьем аргументе. Это означает, что строки с равными значениями в указанном столбце остаются в своем исходном порядке. Сортировка X в порядке убывания, используя значения в третьем столбце и возвращая 5 лучших строк.

TB = topkrows(X,5,3)
TB = 5×5

     5     7    10     2     6
     2     9     8     6     6
    10    10     8     7     6
    10     7     8     2     4
    10     2     8     3     6

Сортировка X использование третьего и четвертого столбцов. В этом случае topkrows сортировка строк по столбцам 3. Затем для всех строк с равными значениями в столбце 3 сортируется по столбцу 4.

TC = topkrows(X,5,[3 4])
TC = 5×5

     5     7    10     2     6
    10    10     8     7     6
     2     9     8     6     6
    10     2     8     3     6
    10     7     8     2     4

Отсортируйте матрицу с помощью нескольких столбцов с различными направлениями сортировки.

Создайте 100 на 5 матрицу случайных целых чисел между 1 и 10.

rng default % for reproducibility
X = randi(10,100,5);

Сортировка X используя первые три столбца и возвращая верхние 10 строк. Задайте направление сортировки для каждого столбца, используя массив ячеек.

TA = topkrows(X,10,1:3,{'descend','ascend','ascend'})
TA = 10×5

    10     1     4     6     7
    10     1     8     5     1
    10     2     3     4     7
    10     3     5    10     5
    10     4     7     2     4
    10     5     5     2     7
    10     5     5     6     7
    10     6     5     5     7
    10     6     6     1     5
    10     7     7     8     1

Сортировка строк неоднородных данных в таблице.

Составьте таблицу из patients.mat набор данных, который включает базовую информацию о здоровье для группы пациентов. Включите возраст пациентов, пол, рост и их самооценку состояния здоровья в таблицу. Сделайте SelfAssessedHealthStatus переменная порядковый категориальный массив.

load patients
vals = {'Poor','Fair','Good','Excellent'};
SelfAssessedHealthStatus = categorical(SelfAssessedHealthStatus,vals,'Ordinal',true);
T = table(Age,Gender,Height,SelfAssessedHealthStatus);

Найдите 10 лучших строк, когда таблица отсортирована в порядке убывания. Результат отсортирован по первой переменной, Age, в порядке убывания. Остальные столбцы подсортированы для разрыва связей:

  • The Gender переменная подчинена разрыву связей с возрастом.

  • The Height переменная разрывает связи с полом.

  • The SelfAssessedHealthStatus переменная разрывает связи с высотой.

TA = topkrows(T,10)
TA=10×4 table
    Age      Gender      Height    SelfAssessedHealthStatus
    ___    __________    ______    ________________________

    50     {'Male'  }      72             Excellent        
    50     {'Male'  }      68             Good             
    49     {'Male'  }      70             Fair             
    49     {'Male'  }      68             Poor             
    49     {'Female'}      64             Good             
    49     {'Female'}      63             Good             
    48     {'Male'  }      71             Good             
    48     {'Male'  }      71             Good             
    48     {'Male'  }      66             Fair             
    48     {'Female'}      66             Excellent        

Найдите 10 лучших строк, содержащих самых молодых женщин, отсортировав по Gender переменная и подсортировка на Age переменная.

TB = topkrows(T,10,{'Gender','Age'},'ascend')
TB=10×4 table
    Age      Gender      Height    SelfAssessedHealthStatus
    ___    __________    ______    ________________________

    25     {'Female'}      63             Good             
    25     {'Female'}      64             Excellent        
    27     {'Female'}      69             Fair             
    28     {'Female'}      65             Good             
    28     {'Female'}      65             Good             
    28     {'Female'}      66             Good             
    29     {'Female'}      63             Excellent        
    29     {'Female'}      68             Excellent        
    29     {'Female'}      64             Good             
    30     {'Female'}      67             Excellent        

Найдите 10 самых старых женщин, изменив направление сортировки Age переменная в 'descend'.

TB = topkrows(T,10,{'Gender','Age'},{'ascend','descend'})
TB=10×4 table
    Age      Gender      Height    SelfAssessedHealthStatus
    ___    __________    ______    ________________________

    49     {'Female'}      64             Good             
    49     {'Female'}      63             Good             
    48     {'Female'}      65             Excellent        
    48     {'Female'}      66             Excellent        
    48     {'Female'}      64             Excellent        
    48     {'Female'}      64             Good             
    48     {'Female'}      66             Excellent        
    47     {'Female'}      66             Excellent        
    46     {'Female'}      68             Good             
    45     {'Female'}      68             Excellent        

Отсортируйте матрицу комплексных чисел по абсолютному значению и затем по вещественной части.

Создайте 100 на 2 матрицу случайных комплексных чисел.

valRange = [-10 10];
X = randi(valRange,100,2) + 1i*randi(valRange,100,2);

Найдите 10 лучших строк матрицы. По умолчанию topkrows сравнивает комплексные числа по абсолютному значению.

TA = topkrows(X,10)
TA = 10×2 complex

 -10.0000 + 9.0000i  10.0000 - 2.0000i
  -8.0000 + 9.0000i   2.0000 - 8.0000i
   9.0000 + 8.0000i   4.0000 + 7.0000i
  -6.0000 +10.0000i  -8.0000 - 7.0000i
   6.0000 -10.0000i  -1.0000 - 5.0000i
   6.0000 -10.0000i   0.0000 + 5.0000i
  -7.0000 + 9.0000i  -2.0000 - 5.0000i
   9.0000 - 7.0000i  10.0000 + 7.0000i
   9.0000 - 7.0000i   6.0000 + 6.0000i
  -9.0000 - 7.0000i   9.0000 + 9.0000i

Найдите 10 лучших строк матрицы, используя только вещественную часть комплексных чисел путем определения 'ComparisonMethod' Пара "имя-значение".

TB = topkrows(X,10,'ComparisonMethod','real')
TB = 10×2 complex

  10.0000 + 4.0000i  -3.0000 - 7.0000i
  10.0000 + 3.0000i   4.0000 + 5.0000i
  10.0000 + 2.0000i   5.0000 - 7.0000i
  10.0000 - 1.0000i  -1.0000 - 8.0000i
  10.0000 - 1.0000i  -6.0000 +10.0000i
  10.0000 - 4.0000i  -9.0000 + 0.0000i
  10.0000 - 5.0000i  -8.0000 - 3.0000i
   9.0000 + 8.0000i   4.0000 + 7.0000i
   9.0000 + 5.0000i -10.0000 + 0.0000i
   9.0000 + 1.0000i   1.0000 - 9.0000i

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

свернуть все

Входной массив, заданный как число, логический, символ, строка, категориальный, datetime или массив длительности.

  • Если X является неординальным категориальным массивом, тогда topkrows сортирует элементы в порядке убывания на основе порядка категорий, возвращаемых categories(X).

  • Если X содержит NaN, NaT, или другие отсутствующие значения, затем topkrows помещает отсутствующие значения в конец нисходящей сортировки.

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

Входная таблица, заданная как таблица или расписание.

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

Количество возвращаемых строк, заданное как неотрицательное скалярное целое число. Если k больше, чем количество строк в X, затем topkrows возвращает все строки в X.

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

Пример: B = topkrows(X,100,[1 3]) сортирует по первому и третьему столбцам перед возвратом 100 верхних строк.

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

ОпцияПримерОписание
положительное целое числоtopkrows(T,k,3)Целое число n задает индекс переменной, по которой выполняется сортировка, возвращаемая T.Properties.VariableNames{n}.
вектор положительных целых чиселtopkrows(T,k,[1 3])Векторная [n1 n2 …] задает индексы нескольких переменных для сортировки как возвращенные T.Properties.VariableNames{[n1 n2 …]}.
логический векторtopkrows(T,k,[true false true])Задает одну или несколько переменных для сортировки с помощью значений true или false.
имя переменнойtopkrows(T,k,'Var3')Задает переменную сортировки как одно из имен переменных, перечисленных в T.Properties.VariableNames.
массив ячеекtopkrows(T,k,{'Var1 'Var3'})Задает несколько переменных сортировки, выбранных из T.Properties.VariableNames.
'RowNames'topkrows(T,k,'RowNames')Только для таблиц. Эта опция сортирует результаты по именам строк.

Пример: B = topkrows(X,k,[1 3]) сортирует по первому и третьему столбцам.

Пример: B = topkrows(X,k,'Year') сортировки с использованием Year переменная.

Направление сортировки, заданное как 'descend', 'ascend'или массив ячеек, который задает некоторую комбинацию этих значений.

Если direction - массив ячеек, тогда он должен содержать 'descend' или 'ascend' для каждого сортировочного столбца, заданного col или vars. Если вы не задаете col или vars, тогда массив ячеек должен содержать 'descend' или 'ascend' для каждого столбца в X или переменной в T.

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

  • 'auto' - (по умолчанию) Сравнивает вещественные числа согласно 'real' и комплексные числа согласно 'abs'.

  • 'real' - Сравнивает числа по вещественной части real(A). Числа с равной вещественной частью подсортированы мнимой частью imag(A).

  • 'abs' - Сравнивает числа по абсолютному значению abs(A). Числа с равной величиной подсортированы углом фазы angle(A).

Эта опция не поддерживает нечисловые входные данные (datetime, duration, string, и так далее).

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

свернуть все

Запрошенные строки, возвращенные как массив того же класса, что и X или T.

Индексы строк, возвращенные как вектор. I описывает порядок выбранных строк таким образом, чтобы B = X(I,:) или B = T(I,:).

Совет

  • topkrows не делает полный вид входных данных, поэтому, как правило, быстрее, чем sort и sortrows когда количество запрашиваемых строк невелико.

Вопросы совместимости

расширить все

Поведение изменено в R2017b

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

.

См. также

| | | | |

Введенный в R2016b