이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

categorical

범주에 할당된 값을 포함하는 배열

설명

categoricalHigh, Med, Low와 같은 유한한 이산 범주 집합에 값을 할당하는 데이터형입니다. 이러한 범주에는 High > Med > Low와 같은 수학적 정렬을 적용할 수 있으며, 이것은 필수 사항이 아닙니다. categorical형 배열을 사용하면 숫자형이 아닌 데이터를 효율적으로 저장하고 편리하게 조작하는 한편, 값에 의미 있는 이름을 부여할 수 있습니다. categorical형 배열은 흔히 테이블에서 행 그룹을 지정하는 데 사용됩니다.

생성

구문

B = categorical(A)
B = categorical(A,valueset)
B = categorical(A,valueset,catnames)
B = categorical(A,___,Name,Value)

설명

예제

B = categorical(A)A 배열로부터 categorical형 배열을 만듭니다. B의 범주는 A에서 가져와 정렬한 고유한 값들입니다.

예제

B = categorical(A,valueset)valueset의 각 값에 대해 하나의 범주를 만듭니다. B의 범주는 valueset의 값과 순서가 동일합니다.

valueset을 사용하여 A에 없는 값에 대한 범주를 포함할 수 있습니다. 반대로, valueset에 없는 값이 A에 포함되어 있으면 B의 대응하는 요소가 정의되지 않습니다.

예제

B = categorical(A,valueset,catnames)valueset의 범주 값과 catnames의 이름을 일치시켜 B의 범주를 명명합니다.

예제

B = categorical(A,___,Name,Value)는 하나 이상의 Name,Value 쌍 인수를 추가 옵션으로 지정하여 categorical형 배열을 만듭니다. 위에 열거한 구문에 있는 어떤 입력 인수도 포함할 수 있습니다.

예를 들어, 범주에 수학적 정렬이 적용되었음을 나타내려면 'Ordinal',true를 지정하십시오.

입력 인수

모두 확장

입력 배열로, 숫자형 배열, 논리형 배열, categorical형 배열, datetime형 배열, duration형 배열, string형 배열 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다.

categorical은 string형이나 문자형 벡터인 입력값에서 선행 공백과 후행 공백을 제거합니다.

A에 누락된 값이 있으면 B의 대응 요소가 정의되지 않고 <undefined>로 표시됩니다. categorical 함수는 다음 값을 정의되지 않은 categorical형 값으로 변환합니다.

  • 숫자형 배열과 duration형 배열의 NaN

  • string형 배열에서 누락된 문자열(<missing>) 또는 빈 문자열("")

  • 문자형 벡터로 구성된 셀형 배열에서 빈 문자형 벡터('')

  • datetime형 배열의 NaT

  • categorical형 배열에서 정의되지 않은 값(<undefined>)

B에는 정의되지 않은 값에 대한 범주가 없습니다. 누락되거나 정의되지 않은 값에 대한 명시적 범주를 만들려면 catnames에 원하는 범주 이름을 포함시키고 valueset에 대응 값으로서 누락된 값을 포함시켜야 합니다.

또한 A는 다음 클래스 메서드를 갖는 객체의 배열일 수 있습니다.

  • unique

  • eq

범주로, 고유한 값으로 구성된 벡터로 지정됩니다. valueset의 데이터형과 A의 데이터형은 동일해야 하지만 A가 string형 배열인 경우는 예외입니다. 이 경우, valueset는 string형 배열이거나 문자형 벡터로 구성된 셀형 배열일 수 있습니다.

categorical은 string형이나 문자형 벡터인 valueset의 요소에서 선행 공백과 후행 공백을 제거합니다.

범주 이름으로, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열로 지정됩니다. catnames 입력 인수를 지정하지 않으면 categoricalvalueset의 값을 범주 이름으로 사용합니다.

A의 각기 다른 여러 값을 B의 단일 범주에 병합하려면 해당 값에 대응하는 중복된 이름을 포함하십시오.

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

예: 'Ordinal',true는 범주에 수학적 정렬(Mathematical Ordering)이 적용되도록 지정합니다.

정렬 순서 표시자로, 'Ordinal'과 함께 false(0)나 true(1)가 쉼표로 구분되어 지정됩니다.

false (0)

categorical은 순서형이 아닌 categorical형 배열을 만들고, 이것은 디폴트 동작입니다.

B의 범주는 수학적 정렬(Mathematical Ordering)이 적용되지 않습니다. 따라서, B의 값만 동일한지 비교할 수 있습니다.

true (1)

categorical은 순서형 categorical형 배열을 만듭니다.

B의 범주는 지정된 첫 번째 범주가 가장 작고 마지막 범주가 가장 크도록 하는 수학적 정렬(Mathematical Ordering)이 적용됩니다. 값이 동일한지 비교할 수 있을 뿐만 아니라 보다 작음, 보다 큼 등의 관계 연산자를 사용하여 B의 값을 비교할 수 있습니다. 또한 순서형 categorical형 배열에는 min 함수와 max 함수를 사용할 수 있습니다.

자세한 내용은 순서형 categorical형 배열 항목을 참조하십시오.

범주를 보호하는 표시자로서, 'Protected'와 함께 false(0)나 true(1)가 쉼표로 구분되어 지정됩니다. 순서형 categorical형 배열의 범주는 항상 보호됩니다. 'Ordinal',true를 지정한 경우 이 디폴트 값은 true입니다. 그렇지 않을 경우 값은 false가 됩니다.

false (0)

B에 새 값을 할당하면 범주가 자동으로 업데이트됩니다. 따라서 범주가 다른 (비순서형) categorical형 배열을 결합할 수 있습니다. 그에 따라 범주가 업데이트되어 두 배열의 범주를 포함할 수 있습니다.

true (1)

B에 새 값을 할당할 때 값이 기존 범주 중 하나에 속해야 합니다. 따라서 동일한 범주를 가진 배열만 결합할 수 있습니다. B에 새 범주를 추가하려면 addcats 함수를 사용해야 합니다.

예제

모두 축소

기상 관측소 레이블로 이루어진 categorical형 배열을 생성합니다. 이 배열을 온도 측정값 테이블에 추가합니다. 그런 다음 범주를 사용하여 관측소별 온도 측정값을 선택합니다.

먼저 온도 측정값, 날짜, 관측소 레이블을 포함하는 배열을 생성합니다.

Temps = [58; 72; 56; 90; 76];
Dates = {'2017-04-17';'2017-04-18';'2017-04-30';'2017-05-01';'2017-04-27'};
Stations = {'S1';'S2';'S1';'S3';'S2'};

Stations를 categorical형 배열로 변환합니다.

Stations = categorical(Stations)
Stations = 5x1 categorical array
     S1 
     S2 
     S1 
     S3 
     S2 

범주를 표시합니다. 세 개의 관측소 레이블이 범주입니다.

categories(Stations)
ans = 3x1 cell array
    {'S1'}
    {'S2'}
    {'S3'}

온도, 날짜, 관측소 레이블을 포함하는 테이블을 생성합니다.

T = table(Temps,Dates,Stations)
T=5×3 table
    Temps       Dates        Stations
    _____    ____________    ________

     58      '2017-04-17'       S1   
     72      '2017-04-18'       S2   
     56      '2017-04-30'       S1   
     90      '2017-05-01'       S3   
     76      '2017-04-27'       S2   

관측소 S2에서 측정한 값을 표시합니다. == 연산자를 사용하여 StationS2인 값을 찾을 수 있습니다. 그런 다음 논리형 인덱싱을 사용하여 관측소 S2의 데이터가 있는 테이블 행을 선택합니다.

TF = (T.Stations == 'S2');
T(TF,:)
ans=2×3 table
    Temps       Dates        Stations
    _____    ____________    ________

     72      '2017-04-18'       S2   
     76      '2017-04-27'       S2   

문자형 벡터로 구성된 셀형 배열 A를 categorical형 배열로 변환합니다. A에 없는 값을 포함하는 범주 목록을 지정합니다.

문자형 벡터로 구성된 셀형 배열을 만듭니다.

A = {'republican' 'democrat'; 'democrat' 'democrat'; 'democrat' 'republican'};

A를 categorical형 배열로 변환합니다. independent에 대한 범주를 추가합니다.

valueset = {'democrat' 'republican' 'independent'};
B = categorical(A,valueset)
B = 3x2 categorical array
     republican      democrat   
     democrat        democrat   
     democrat        republican 

B의 범주를 표시합니다.

categories(B)
ans = 3x1 cell array
    {'democrat'   }
    {'republican' }
    {'independent'}

숫자형 배열을 만듭니다.

A = [1 3 2; 2 1 3; 3 1 2]
A = 3×3

     1     3     2
     2     1     3
     3     1     2

A를 categorical형 배열 B로 변환하고 범주 이름을 지정합니다.

B = categorical(A,[1 2 3],{'red' 'green' 'blue'})
B = 3x3 categorical array
     red        blue      green 
     green      red       blue  
     blue       red       green 

B의 범주를 표시합니다.

categories(B)
ans = 3x1 cell array
    {'red'  }
    {'green'}
    {'blue' }

B는 순서형 categorical형 배열이 아닙니다. 따라서, B에 있는 값은 등식 연산자인 ==~=만 사용하여 비교할 수 있습니다.

범주 'red'에 속하는 요소를 찾습니다. 논리형 인덱싱을 사용하여 찾은 요소에 액세스합니다.

TF = (B == 'red');
B(TF)
ans = 3x1 categorical array
     red 
     red 
     red 

5x2 숫자형 배열을 만듭니다.

A = [3 2;3 3;3 2;2 1;3 2]
A = 5×2

     3     2
     3     3
     3     2
     2     1
     3     2

A1, 2, 3으로 범주 child, adult, senior를 각각 나타내는 순서형 categorical형 배열로 변환합니다.

valueset = [1:3];
catnames = {'child' 'adult' 'senior'};

B = categorical(A,valueset,catnames,'Ordinal',true)
B = 5x2 categorical array
     senior      adult  
     senior      senior 
     senior      adult  
     adult       child  
     senior      adult  

B가 순서형 배열이므로, B의 범주에는 수학적 정렬(Mathematical Ordering) child < adult < senior가 적용됩니다.

R2017a부터는 큰따옴표를 사용하여 string형 배열을 생성할 수 있습니다. 또한 string형 배열에는 따옴표 없이, <missing>으로 표시되는 누락된 값이 있을 수 있습니다.

str = ["plane","jet","plane","helicopter",missing,"jet"]
str = 1x6 string array
    "plane"    "jet"    "plane"    "helicopter"    <missing>    "jet"

string형 배열 str을 categorical형 배열로 변환합니다. categorical 함수는 누락된 값을 정의되지 않은 categorical형 값으로 변환하여, <undefined>로 표시합니다.

C = categorical(str)
C = 1x6 categorical array
     plane      jet      plane      helicopter      <undefined>      jet 

categorical 대신 discretize 함수를 사용하여 100개의 난수를 세 개의 범주로 비닝합니다.

x = rand(100,1);
y = discretize(x,[0 .25 .75 1],'categorical',{'small','medium','large'});
summary(y)
     small       22 
     medium      46 
     large       32 

  • categorical형 배열을 수락하거나 반환하는 함수 목록은 categorical형 배열 항목을 참조하십시오.

대안

또한 discretize 함수를 사용하여 숫자 데이터를 범주로 그룹화할 수 있습니다.

확장 기능

R2013b에 개발됨