주요 콘텐츠

보호된 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®에서 오류가 반환됩니다. 예를 들어, xlargeA의 범주가 아니기 때문에 표현식 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형 배열(항상 보호된 범주를 가짐)을 결합하려면 이 두 배열이 동일한 범주를 가져야 하고 범주의 순서가 동일해야 합니다.

범주 xsmallA에서 범주 small 앞에 추가합니다.

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

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

범주 medium, large, xlargeB에서 범주 small 뒤에 추가합니다.

B = addcats(B,["medium" "large" "xlarge"],After="small");

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

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

AB를 세로로 결합합니다.

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가 됩니다.

참고 항목

| | | | |

도움말 항목