Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

categorical형 배열 생성하기

이 예제에서는 categorical형 배열을 생성하는 방법을 보여줍니다. categorical은 유한한 이산 범주 집합에 속하는 값의 데이터를 저장하기 위한 데이터형입니다. 이러한 범주에는 일반적인 순서가 있을 수도 있지만 반드시 그런 것은 아닙니다. categorical형 배열은 데이터를 효율적으로 저장하고 편리하게 조작할 수 있도록 하는 동시에 값에 대한 의미 있는 이름도 유지합니다. 테이블에서 categorical형 배열을 사용하여 행의 그룹을 정의할 수 있습니다.

기본적으로, categorical형 배열은 수학적 정렬(Mathematical Ordering)이 적용되지 않는 범주를 포함합니다. 예를 들어, 애완 동물 범주들로 구성된 이산 집합 ["dog","cat","bird"]에는 유의미한 수학적 순서가 없으므로 MATLAB®은 사전순 정렬 ["bird","cat","dog"]를 사용합니다. 순서형 categorical형 배열은 유의미한 수학적 정렬이 적용되는 범주를 포함합니다. 예를 들어, 크기 범주들로 구성된 이산 집합 ["small","medium","large"]에는 수학적 정렬 small < medium < large가 적용됩니다.

string형 배열(또는 문자형 벡터로 구성된 셀형 배열)에서 categorical형 배열을 생성하면 선행 공백과 후행 공백이 제거됩니다. 예를 들어, 텍스트 [" cat","dog"]를 범주로 지정할 경우 이 텍스트를 범주로 변환하면 ["cat","dog"]가 됩니다.

string형 배열에서 categorical형 배열 생성하기

categorical 함수를 사용하여 숫자형 배열, 논리형 배열, string형 배열, 문자형 벡터로 구성된 셀형 배열, 기존 categorical형 배열 중 하나에서 categorical형 배열을 생성할 수 있습니다.

뉴잉글랜드의 주 이름을 포함하는 1×11 string형 배열을 생성합니다.

state = ["MA","ME","CT","VT","ME","NH","VT","MA","NH","CT","RI"]
state = 1x11 string
    "MA"    "ME"    "CT"    "VT"    "ME"    "NH"    "VT"    "MA"    "NH"    "CT"    "RI"

string형 배열 state를 수학적인 순서가 없는 categorical형 배열로 변환합니다.

state = categorical(state)
state = 1x11 categorical
     MA      ME      CT      VT      ME      NH      VT      MA      NH      CT      RI 

변수 state의 이산 범주를 나열합니다. state에는 6개의 고유 상태만 나열되어 있으며, 이는 범주가 6개임을 의미합니다. 범주가 사전순으로 나열됩니다.

categories(state)
ans = 6x1 cell
    {'CT'}
    {'MA'}
    {'ME'}
    {'NH'}
    {'RI'}
    {'VT'}

새 요소 및 누락된 요소 추가하기

요소를 원래 string형 배열에 추가합니다. 요소 중 하나는 누락된 문자열이며, <missing>으로 표시됩니다. NaN이 숫자형 배열에서 누락값을 나타내듯이 <missing>은 string형 배열에서 누락값을 나타냅니다.

state = ["MA","ME","CT","VT","ME","NH","VT","MA","NH","CT","RI"];
state = [string(missing) state];
state(13) = "ME"
state = 1x13 string
    <missing>    "MA"    "ME"    "CT"    "VT"    "ME"    "NH"    "VT"    "MA"    "NH"    "CT"    "RI"    "ME"

string형 배열을 categorical형 배열로 변환합니다. 누락된 문자열이 정의되지 않은 범주가 되며, <undefined>로 표시됩니다. 이는 어떠한 범주에도 속하지 않는 categorical형 배열의 요소를 나타냅니다.

state = categorical(state)
state = 1x13 categorical
     <undefined>      MA      ME      CT      VT      ME      NH      VT      MA      NH      CT      RI      ME 

string형 배열에서 순서형 categorical형 배열 생성하기

8개 객체의 크기를 포함하는 1×8 string형 배열을 생성합니다.

AllSizes = ["medium","large","small","small","medium",...
            "large","medium","small"];

string형 배열 AllSizes에는 3개의 각기 다른 값 "large", "medium", "small"이 있습니다. string형 배열을 사용할 경우 small < medium < large를 간편하게 나타낼 수 있는 방법이 없습니다.

string형 배열 AllSizes를 순서형 categorical형 배열로 변환합니다. valueset을 사용하여 범주를 정의하는 값 small, medium, large를 지정합니다. 순서형 categorical형 배열의 경우, 지정되는 첫 번째 범주가 가장 작으며 마지막 범주가 가장 큽니다.

valueset = ["small","medium","large"];
sizeOrd = categorical(AllSizes,valueset,'Ordinal',true)
sizeOrd = 1x8 categorical
     medium      large      small      small      medium      large      medium      small 

categorical형 배열에 포함된 값의 순서 sizeOrd는 변경되지 않은 상태로 유지됩니다.

categorical형 변수 sizeOrd의 이산 범주를 나열합니다.

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

범주가 수학적 정렬(Mathematical Ordering) small < medium < large와 일치하도록 지정된 순서로 나열됩니다.

숫자형 데이터를 비닝(Binning)하여 순서형 categorical형 배열 생성

0과 50 사이에 있는 100개의 난수로 구성된 벡터를 생성합니다.

x = rand(100,1)*50;

discretize 함수를 사용하여 x의 값을 비닝함으로써 categorical형 배열을 생성합니다. 0과 15 사이의 모든 값을 첫 번째 Bin에 추가하고, 15와 35 사이의 모든 값을 두 번째 Bin에 추가하고, 35와 50 사이의 모든 값을 세 번째 Bin에 추가합니다. 각 Bin은 좌측 끝점은 포함하지만 우측 끝점은 포함하지 않습니다.

catnames = ["small","medium","large"];
binnedData = discretize(x,[0 15 35 50],'categorical',catnames);

binnedData는 3개의 범주를 갖는 100×1 순서형 categorical형 배열이며 small < medium < large가 됩니다.

summary 함수를 사용하여 각 범주에 포함된 요소의 개수를 출력합니다.

summary(binnedData)
     small       30 
     medium      35 
     large       35 

다양한 종류의 비닝된 데이터 차트를 만들 수 있습니다. 예를 들어, binnedData에 대한 원형 차트를 만들어 보겠습니다.

pie(binnedData)

참고 항목

| | |

관련 예제

세부 정보