exponenta event banner

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, в порядке убывания. Остальные столбцы разделяются для разрыва связей:

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

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

  • 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