Main Content

sortrows

행렬 또는 테이블의 행 정렬

설명

예제

B = sortrows(A)는 첫 번째 열의 요소를 기준으로 행렬의 행을 오름차순으로 정렬합니다. 첫 번째 열에 반복된 요소가 있으면 sortrows는 다음 열의 값에 따라 정렬하고 이후에 나오는 동일한 값에 대하여 이 동작을 반복합니다.

예제

B = sortrows(A,column)은 벡터 column에 지정된 열을 기준으로 A를 정렬합니다. 예를 들어, 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)는 테이블 또는 타임테이블의 행을 정렬합니다.

  • tblA가 테이블인 경우 sortrows는 첫 번째 변수의 값을 기준으로 tblA를 오름차순으로 정렬합니다. 첫 번째 변수에서 요소가 반복되는 경우 sortrows는 두 번째 변수의 요소를 기준으로 정렬하며, 이러한 방식이 계속해서 적용됩니다.

  • tblA가 타임테이블이면 sortrowstblA의 행을 행 시간값을 기준으로 오름차순으로 정렬합니다. 그러나 행은 행 시간값에 대해서만 정렬됩니다. 행 시간값이 반복되는 경우 sortrows는 타임테이블 변수의 요소를 기준으로 정렬하지 않습니다.

    타임테이블의 행 시간값은 타임테이블의 첫 번째 차원에 있는 행에 레이블을 지정하는 duration형 값 또는 datetime형 값입니다.

예제

tblB = sortrows(tblA,'RowNames')는 해당 행 이름을 기준으로 테이블을 정렬합니다. 테이블의 행 이름은 테이블의 첫 번째 차원에 있는 행에 레이블을 지정합니다. tblA에 행 이름이 없는 경우 즉, tblA.Properties.RowNames가 비어 있는 경우 sortrowstblA를 반환합니다.

이 구문은 tblA가 타임테이블인 경우에는 지원되지 않습니다.

예제

tblB = sortrows(tblA,rowDimName)은 첫 번째 차원을 따라 행 레이블 rowDimName을 기준으로 tblA를 정렬합니다.

  • tblA가 table형이면 행 레이블은 행 이름입니다.

  • tblA가 timetable형이면 행 레이블은 행 시간값입니다.

예제

tblB = sortrows(tblA,vars)vars에 지정된 변수의 요소를 기준으로 테이블을 정렬합니다. 예를 들어, sortrows(tblA,{'Var1','Var2'})는 먼저 Var1의 요소를 기준으로 tblA의 행을 정렬한 다음 Var2의 요소를 기준으로 정렬합니다.

  • tblA가 table형이고 행 이름을 포함할 경우 vars는 행 이름을 포함할 수 있습니다.

  • tblA가 타임테이블인 경우 vars는 행 시간값을 포함할 수 있습니다.

예제

tblB = sortrows(___,direction)은 위에 열거된 테이블 구문에 대해 tblAdirection에 지정된 순서로 정렬합니다. 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' }

변수 값을 기준으로 테이블의 행을 정렬합니다.

5명의 환자 정보를 나열하는 4개의 변수를 갖는 테이블을 만듭니다.

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  

테이블 행을 정렬합니다. 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  

5명의 환자 정보를 나열하는 4개의 변수를 갖는 테이블을 만듭니다.

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

5명의 환자 정보를 나열하는 4개의 변수를 갖는 테이블을 만듭니다.

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  

5명의 환자 정보를 나열하는 4개의 변수를 갖는 테이블을 만듭니다. 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
복소수 지원 여부:

열 정렬 벡터로, 0이 아닌 정수 스칼라 또는 0이 아닌 정수로 구성된 벡터로 지정됩니다. 지정된 각 정수 값은 정렬의 기준이 되는 열을 나타냅니다. 음의 정수는 정렬 순서가 내림차순임을 나타냅니다.

정렬 방향으로, 'ascend'(디폴트 값) 또는 'descend'를 포함하는 문자형 벡터로 구성된 셀형 배열 또는 문자형 벡터 또는 string형 배열로 지정됩니다. direction이 문자형 벡터로 구성된 셀형 배열인 경우 항목 개수는 정렬의 기준이 되는 열이나 변수의 개수와 일치해야 합니다.

column 인수와 direction 인수가 함께 지정된 경우 sortrowsdirection에 따라 정렬하며 column에 있는 요소의 부호를 무시합니다.

데이터형: char | string | cell

입력 테이블로, table형 또는 timetable형으로 지정됩니다. tblA의 각 변수는 sortsortrows에 대한 유효한 입력값이어야 합니다.

데이터형: table | timetable

입력 테이블 또는 타임테이블의 첫 번째 차원 이름으로, string형 스칼라 또는 문자형 벡터로 지정됩니다.

  • tblA가 행 이름을 포함하는 테이블인 경우 rowDimName은 해당 테이블의 첫 번째 차원 이름입니다. 기본적으로, 첫 번째 차원의 이름은 "Row"입니다. 차원 이름은 테이블의 속성입니다. tblA.Properties.DimensionNames를 사용하여 tblA의 차원 이름에 액세스할 수 있습니다.

  • tblA가 타임테이블인 경우 rowDimName은 행 시간값으로 구성된 벡터 이름입니다. Time 또는 Date와 같이 타임테이블을 만들 때 이름을 지정할 수 있습니다. 또한 tblA.Properties.DimensionNames를 사용하여 차원 이름에 액세스할 수도 있습니다.

예: 테이블 T에 행 이름이 포함되어 있으며 T.Properties.DimensionName{1} = "Name"을 사용하여 첫 번째 차원 이름을 변경한 경우, sortrows(T,"Name")은 행 이름을 기준으로 테이블을 정렬합니다.

예: 타임테이블 TTDate라는 이름의 시간 벡터가 있으면 sortrows(TT,"Date")Date에 포함된 날짜와 시간에 따라 타임테이블을 정렬합니다.

데이터형: string | char

정렬을 위한 변수로, 정수 스칼라, 정수로 구성된 벡터, 변수 이름, 변수 이름으로 구성된 string형 배열, 변수 이름으로 구성된 셀형 배열, pattern 스칼라 또는 논리형 벡터로 지정됩니다. vars는 정렬할 때 기준으로 삼을 테이블 변수를 나타냅니다.

vars 요소가 양수인 경우, sortrowstblA의 해당 변수를 오름차순으로 정렬합니다. vars 요소가 음수인 경우, sortrowstblA의 해당 변수를 내림차순으로 정렬합니다.

예: sortrows(tblA,["Height","Weight"])는 먼저 변수 Height를 기준으로 tblA의 행을 오름차순으로 정렬한 다음, 우선 순위를 결정하기 위해 변수 Weight를 기준으로 정렬합니다.

예: sortrows(tblA,"X" + wildcardPattern)은 이름의 나머지 문자와 일치시키는 와일드카드 패턴을 사용하여 이름이 영문자 "X"로 시작하는 테이블 변수를 기준으로 tblA의 행을 오름차순으로 정렬합니다.

예: sortrows(tblA,[1 4])tblA의 첫 번째 변수를 기준으로 오름차순으로 정렬한 다음, 우선 순위를 결정하기 위해 네 번째 변수를 기준으로 정렬합니다.

예: sortrows(TT,["Time","X"])는 먼저 타임테이블 TT의 행 시간값을 오름차순으로 정렬한 다음, 우선 순위를 결정하기 위해 테이블 변수 X를 기준으로 정렬합니다.

데이터형: double | single | string | char | cell | pattern | logical

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: sortrows(A,'MissingPlacement','last')

누락값(NaN, NaT, <undefined>, missing)의 배치로, 'MissingPlacement'와 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

  • 'auto' — 누락된 요소가 오름차순의 경우 마지막에, 내림차순의 경우 처음에 배치됩니다.

  • 'first' — 누락된 요소가 처음에 배치됩니다.

  • 'last' — 누락된 요소가 마지막에 배치됩니다.

요소 비교 방법으로, 'ComparisonMethod'와 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

  • 'auto'A가 실수인 경우 real(A)를 기준으로 A의 행을 정렬하고, A가 복소수인 경우 abs(A)를 기준으로 정렬합니다.

  • 'real'A가 실수이거나 복소수인 경우 real(A)를 기준으로 A의 행을 정렬합니다. A의 열에 실수부가 동일한 요소가 있는 경우, imag(A)를 사용하여 우선 순위를 결정합니다.

  • 'abs'A가 실수이거나 복소수인 경우 abs(A)를 기준으로 A의 행을 정렬합니다. A의 열에 크기가 동일한 요소가 있는 경우, 구간 (-π,π]에서의 angle(A)를 사용하여 우선 순위를 결정합니다.

출력 인수

모두 축소

정렬된 배열로, 벡터, 행렬 또는 다차원 배열로 반환됩니다. BA와 크기가 동일합니다.

데이터형: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | cell | categorical | datetime | duration

정렬된 테이블로, tblA와 동일한 변수를 가진 테이블이나 타임테이블로 반환됩니다.

데이터형: table | timetable

정렬 인덱스로, 인덱스 벡터로 반환됩니다. 정렬 인덱스를 보면 입력값의 행이 어떻게 재배열되었는지 알 수 있습니다(B = A(index,:)).

sortrows 함수는 안정적인 정렬 알고리즘을 사용합니다. 따라서 입력값이 반복 값을 포함하는 경우 정렬 인덱스는 정렬 방향과 관계없이 입력값의 원래 순서를 유지합니다. 예를 들어, A = [1 1; 2 2; 1 2; 2 2]이면 [Ba,Ia] = sortrows(A,'ascend')는 정렬 인덱스 Ia = [1; 3; 2; 4]를 반환하고 [Bd,Id] = sortrows(A,'descend')는 정렬 인덱스 Id = [2; 4; 3; 1]을 반환합니다.

데이터형: double

확장 기능

버전 내역

R2006a 이전에 개발됨

참고 항목

| | |