Main Content

보호된 categorical형 배열을 사용하기

이 예제에서는 보호된 범주를 가진 categorical형 배열을 사용하는 방법을 보여줍니다.

categorical 함수를 사용하여 categorical형 배열을 생성하는 경우 범주가 보호되는지 여부를 지정할 수 있습니다. 순서형 categorical형 배열은 항상 보호된 범주를 가지지만, 'Protected',true 이름-값 쌍의 인수를 사용하여 보호되는 비순서형 categorical형 배열을 생성할 수도 있습니다.

배열의 범주 목록에 포함되지 않는 값을 할당하면, 범주 목록에 새 값이 포함되도록 배열이 자동으로 업데이트됩니다. 이와 유사하게, 범주가 다른 (비순서형) categorical형 배열을 결합할 수 있습니다. 결과에 포함되는 범주는 두 배열의 범주를 포함합니다.

새 값을 보호된 categorical형 배열에 할당할 때 값은 기존 범주 중 하나에 속해야 합니다. 이와 유사하게, 동일한 범주를 가진 보호된 배열만 결합할 수 있습니다.

  • 보호된 범주를 가진 두 개의 비순서형 categorical형 배열을 결합하려는 경우 이 두 배열이 동일한 범주를 가져야 합니다. 단, 순서는 상관없습니다. 결과로 생성되는 categorical형 배열은 첫 번째 배열의 범주 순서를 사용합니다.

  • 두 개의 순서형 categorical형 배열(항상 보호된 범주를 가짐)을 결합하려는 경우 이 두 배열이 순서를 포함하여 동일한 범주를 가져야 합니다.

새 범주를 배열에 추가하려면 함수 addcats를 사용해야 합니다.

순서형 categorical형 배열 만들기

객체 10개의 크기가 포함된 categorical형 배열을 만듭니다. 값 'S', 'M', 'L'에 대해 이름 small, medium, large를 각각 사용합니다.

A = categorical({'M';'L';'S';'S';'M';'L';'M';'L';'M';'S'},...
                {'S','M','L'},{'small','medium','large'},'Ordinal',true)
A = 10x1 categorical
     medium 
     large 
     small 
     small 
     medium 
     large 
     medium 
     large 
     medium 
     small 

A는 10×1 categorical형 배열입니다.

A의 범주를 표시합니다.

categories(A)
ans = 3x1 cell
    {'small' }
    {'medium'}
    {'large' }

범주가 보호되는지 확인하기

순서형 categorical형 배열을 생성하는 경우에는 범주가 항상 보호됩니다.

isprotected 함수를 사용하여 A의 범주가 보호되는지 확인합니다.

tf = isprotected(A)
tf = logical
   1

A의 범주가 보호됩니다.

새 범주에 값 할당하기

기존 범주 중 하나에 속하지 않는 새 값을 할당하려고 하면 MATLAB®에서 오류가 반환됩니다. 예를 들어, xlargeA의 범주가 아니기 때문에 표현식 A(2) = 'xlarge'에서처럼 값 'xlarge'를 categorical형 배열에 할당할 수 없습니다. 대신 MATLAB®에서 다음 오류가 반환됩니다.

Error using categorical/subsasgn (line 68)

Cannot add a new category 'xlarge' to this categorical array

because its categories are protected. Use ADDCATS to

add the new category.

xlarge에 대한 새 범주를 추가하려면 addcats 함수를 사용하십시오. A는 순서형이므로 새 범주의 순서를 지정해야 합니다.

A = addcats(A,'xlarge','After','large');

이제, 기존 범주에 'xlarge'가 포함되므로 해당 값을 할당합니다.

A(2) = 'xlarge'
A = 10x1 categorical
     medium 
     xlarge 
     small 
     small 
     medium 
     large 
     medium 
     large 
     medium 
     small 

A는 이제 4개의 범주를 갖는 10×1 categorical형 배열이며 small < medium < large < xlarge가 됩니다.

두 순서형 categorical형 배열 결합

5개 항목의 크기를 포함하는 또 다른 순서형 categorical형 배열 B를 생성합니다.

B = categorical([2;1;1;2;2],1:2,{'xsmall','small'},'Ordinal',true)
B = 5x1 categorical
     small 
     xsmall 
     xsmall 
     small 
     small 

B는 2개의 범주를 갖는 5×1 categorical형 배열이며 xsmall < small이 됩니다.

두 순서형 categorical형 배열(항상 보호된 범주를 가짐)을 결합하려면 이 두 배열이 동일한 범주를 가져야 하고 범주의 순서가 동일해야 합니다.

범주 'xsmall'A에서 범주 'small' 앞에 추가합니다.

A = addcats(A,'xsmall','Before','small');

categories(A)
ans = 5x1 cell
    {'xsmall'}
    {'small' }
    {'medium'}
    {'large' }
    {'xlarge'}

범주 {'medium','large','xlarge'}B에서 범주 'small' 뒤에 추가합니다.

B = addcats(B,{'medium','large','xlarge'},'After','small');

categories(B)
ans = 5x1 cell
    {'xsmall'}
    {'small' }
    {'medium'}
    {'large' }
    {'xlarge'}

AB가 이제 순서를 포함하여 동일한 범주를 가집니다.

AB를 세로로 결합합니다.

C = [A;B]
C = 15x1 categorical
     medium 
     xlarge 
     small 
     small 
     medium 
     large 
     medium 
     large 
     medium 
     small 
     small 
     xsmall 
     xsmall 
     small 
     small 

B의 값이 A의 값에 추가됩니다.

C의 범주를 나열합니다.

categories(C)
ans = 5x1 cell
    {'xsmall'}
    {'small' }
    {'medium'}
    {'large' }
    {'xlarge'}

C는 5개의 범주를 갖는 16×1 순서형 categorical형 배열이며 xsmall < small < medium < large < xlarge가 됩니다.

참고 항목

| | | | |

관련 예제

세부 정보