보호된 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®에서 오류가 반환됩니다. 예를 들어, xlarge
는 A
의 범주가 아니기 때문에 표현식 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'}
A
와 B
가 이제 순서를 포함하여 동일한 범주를 가집니다.
A
와 B
를 세로로 결합합니다.
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
가 됩니다.
참고 항목
categorical
| categories
| summary
| isprotected
| isordinal
| addcats
관련 예제
- categorical형 배열 생성하기
- 테이블 변수의 텍스트를 categorical형으로 변환하기
- categorical형 배열로 데이터에 액세스하기
- categorical형 배열 결합하기
- 곱셈으로 categorical형 배열 결합하기