보호된 categorical형 배열을 사용하기
이 예제에서는 보호된 범주를 가진 categorical형 배열을 사용하는 방법을 보여줍니다.
categorical
함수를 사용하여 categorical형 배열을 생성하는 경우 범주가 보호되는지 여부를 지정할 수 있습니다. 순서형 categorical형 배열은 항상 보호된 범주를 가지지만, Protected
이름-값 인수를 사용하여 보호되는 비순서형 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 = 10×1 categorical
medium
large
small
small
medium
large
medium
large
medium
small
A
의 범주를 표시합니다.
categories(A)
ans = 3×1 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 () (line 57) 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 = 10×1 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 = 5×1 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 = 5×1 cell
{'xsmall'}
{'small' }
{'medium'}
{'large' }
{'xlarge'}
범주 medium
, large
, xlarge
를 B
에서 범주 small
뒤에 추가합니다.
B = addcats(B,["medium" "large" "xlarge"],After="small"); categories(B)
ans = 5×1 cell
{'xsmall'}
{'small' }
{'medium'}
{'large' }
{'xlarge'}
A
와 B
가 이제 순서를 포함하여 동일한 범주를 가집니다.
A
와 B
를 세로로 결합합니다.
C = [A;B]
C = 15×1 categorical
medium
xlarge
small
small
medium
large
medium
large
medium
small
small
xsmall
xsmall
small
small
B
의 값이 A
의 값에 추가됩니다.
C
의 범주를 나열합니다.
categories(C)
ans = 5×1 cell
{'xsmall'}
{'small' }
{'medium'}
{'large' }
{'xlarge'}
C
는 5개의 범주를 갖는 16×1 순서형 categorical형 배열이며 xsmall < small < medium < large < xlarge
가 됩니다.
참고 항목
categorical
| categories
| summary
| isprotected
| isordinal
| addcats