categorical
범주에 할당된 값을 포함하는 배열
설명
categorical
은 High
, Med
, Low
와 같은 유한한 이산 범주 집합에 값을 할당하는 데이터형입니다. 이러한 범주에는 High > Med > Low
와 같은 수학적 정렬을 적용할 수 있으며, 이것은 필수 사항이 아닙니다. categorical형 배열을 사용하면 숫자형이 아닌 데이터를 효율적으로 저장하고 편리하게 조작하는 한편, 값에 의미 있는 이름을 부여할 수 있습니다. categorical형 배열은 흔히 테이블에서 행 그룹을 지정하는 데 사용됩니다.
생성
구문
설명
B = categorical(
는 하나 이상의 A
,___,Name,Value
)Name,Value
쌍 인수를 추가 옵션으로 지정하여 categorical형 배열을 만듭니다. 위에 열거한 구문에 있는 어떤 입력 인수도 포함할 수 있습니다.
예를 들어, 범주에 수학적 정렬이 적용되었음을 나타내려면 'Ordinal',true
를 지정하십시오.
입력 인수
A
— 입력 배열
숫자형 배열 | 논리형 배열 | categorical형 배열 | datetime형 배열 | duration형 배열 | string형 배열 | 문자형 벡터로 구성된 셀형 배열
입력 배열로, 숫자형 배열, 논리형 배열, categorical형 배열, datetime형 배열, duration형 배열, string형 배열 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다.
categorical
은 string형이나 문자형 벡터인 입력값에서 선행 공백과 후행 공백을 제거합니다.
A
에 누락값이 있으면 B
의 대응 요소가 정의되지 않고 <undefined>
로 표시됩니다. categorical
함수는 다음 값을 정의되지 않은 categorical형 값으로 변환합니다.
숫자형 배열과 duration형 배열의
NaN
string형 배열에서 누락값인 string형(
<missing>
) 또는 빈 string형(""
)문자형 벡터로 구성된 셀형 배열에서 빈 문자형 벡터(
''
)datetime형 배열의
NaT
categorical형 배열에서 정의되지 않은 값(
<undefined>
)
B
에는 정의되지 않은 값에 대한 범주가 없습니다. 누락되거나 정의되지 않은 값에 대한 명시적 범주를 만들려면 catnames
에 원하는 범주 이름을 포함시키고 valueset
에 대응 값으로서 누락값을 포함시켜야 합니다.
또한 A
는 다음 클래스 메서드를 갖는 객체의 배열일 수 있습니다.
unique
eq
valueset
— 범주
unique(A)
(디폴트 값) | 고유한 값으로 구성된 벡터
범주로, 고유한 값으로 구성된 벡터로 지정됩니다. valueset
의 데이터형과 A
의 데이터형은 동일해야 하지만 A
가 string형 배열인 경우는 예외입니다. 이 경우, valueset
는 string형 배열이거나 문자형 벡터로 구성된 셀형 배열일 수 있습니다.
categorical
은 string형이나 문자형 벡터인 valueset
의 요소에서 선행 공백과 후행 공백을 제거합니다.
catnames
— 범주 이름
문자형 벡터로 구성된 셀형 배열 | string형 배열
범주 이름으로, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열로 지정됩니다. catnames
입력 인수를 지정하지 않으면 categorical
은 valueset
의 값을 범주 이름으로 사용합니다.
A
의 각기 다른 여러 값을 B
의 단일 범주에 병합하려면 해당 값에 대응하는 중복된 이름을 포함하십시오.
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: 'Ordinal',true
는 범주에 수학적 정렬(Mathematical Ordering)이 적용되도록 지정합니다.
Ordinal
— 순서형 변수 표시자
false
(디폴트 값) | true
순서형 변수 표시자로, 'Ordinal'
과 함께 false
(0
)나 true
(1
)가 쉼표로 구분되어 지정됩니다.
|
|
|
|
자세한 내용은 순서형 categorical형 배열 항목을 참조하십시오.
Protected
— 보호된 범주 표시자
false
| true
보호된 범주 표시자로, 'Protected'
와 함께 false
(0
)나 true
(1
)가 쉼표로 구분되어 지정됩니다. 순서형 categorical형 배열의 범주는 항상 보호됩니다. 'Ordinal',true
를 지정한 경우 이 디폴트 값은 true
입니다. 그렇지 않을 경우 값은 false
가 됩니다.
|
|
|
|
예제
배열 변환과 범주별 데이터 선택하기
기상 관측소 레이블로 이루어진 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
S1
S2
S1
S3
S2
범주를 표시합니다. 세 개의 관측소 레이블이 범주입니다.
categories(Stations)
ans = 3x1 cell
{'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
에서 측정한 값을 표시합니다. ==
연산자를 사용하여 Station
이 S2
인 값을 찾을 수 있습니다. 그런 다음 논리형 인덱싱을 사용하여 관측소 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
republican democrat
democrat democrat
democrat republican
B
의 범주를 표시합니다.
categories(B)
ans = 3x1 cell
{'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
red blue green
green red blue
blue red green
B
의 범주를 표시합니다.
categories(B)
ans = 3x1 cell
{'red' }
{'green'}
{'blue' }
B
는 순서형 categorical형 배열이 아닙니다. 따라서, B
에 있는 값은 등호 ==
와 ~=
만 사용하여 비교할 수 있습니다.
범주 'red'
에 속하는 요소를 찾습니다. 논리형 인덱싱을 사용하여 찾은 요소에 액세스합니다.
TF = (B == 'red');
B(TF)
ans = 3x1 categorical
red
red
red
순서형 categorical형 배열 만들기
5×2 숫자형 배열을 만듭니다.
A = [3 2;3 3;3 2;2 1;3 2]
A = 5×2
3 2
3 3
3 2
2 1
3 2
A
를 1
, 2
, 3
으로 범주 child
, adult
, senior
를 각각 나타내는 순서형 categorical형 배열로 변환합니다.
valueset = [1:3]; catnames = {'child' 'adult' 'senior'}; B = categorical(A,valueset,catnames,'Ordinal',true)
B = 5x2 categorical
senior adult
senior senior
senior adult
adult child
senior adult
B
가 순서형 배열이므로, B
의 범주에는 수학적 정렬(Mathematical Ordering)인 child < adult < senior
가 적용됩니다.
배열 사전할당 및 범주 초기화하기
NaN
으로 구성된 배열을 만들고 이 배열을 categorical형 배열로 변환하여 임의 크기의 categorical형 배열을 사전할당할 수 있습니다. 배열을 사전할당한 후에는 범주 이름을 지정하고 범주를 배열에 추가하여 해당 범주를 초기화할 수 있습니다.
먼저 NaN
으로 구성된 배열을 만듭니다. 임의 크기의 배열을 만들 수 있습니다. 예를 들어, NaN
으로 구성된 2×4 배열을 만듭니다.
A = NaN(2,4)
A = 2×4
NaN NaN NaN NaN
NaN NaN NaN NaN
그런 다음 NaN
으로 구성된 배열을 변환하여 categorical형 배열을 사전할당합니다. categorical
함수는 NaN
을 정의되지 않은 categorical형 값으로 변환합니다. NaN
이 "숫자가 아님(Not-a-Number)"을 나타내는 것처럼 <undefined>
는 범주에 속하지 않는 categorical형 값을 나타냅니다.
A = categorical(A)
A = 2x4 categorical
<undefined> <undefined> <undefined> <undefined>
<undefined> <undefined> <undefined> <undefined>
실제로 이 시점에서 A
는 범주가 없습니다.
categories(A)
ans = 0x0 empty cell array
A
범주를 초기화하려면 addcats
함수를 사용하여 범주 이름을 지정하고 이를 A
에 추가합니다. 예를 들어 small
과 medium
, large
를 3개의 A
범주로 추가합니다.
A = addcats(A,["small","medium","large"])
A = 2x4 categorical
<undefined> <undefined> <undefined> <undefined>
<undefined> <undefined> <undefined> <undefined>
A
의 요소는 정의되지 않은 값인 반면, 해당 범주는 addcats
로 초기화하였습니다.
categories(A)
ans = 3x1 cell
{'small' }
{'medium'}
{'large' }
이제 A
에 범주가 있으므로 정의된 categorical형 값을 A
요소로 할당할 수 있습니다.
A(1) = "medium"; A(8) = "small"; A(3:5) = "large"
A = 2x4 categorical
medium large large <undefined>
<undefined> large <undefined> small
string형 배열 변환하기
R2017a부터는 큰따옴표를 사용하여 string형 배열을 생성할 수 있습니다. 또한 string형 배열에는 따옴표 없이, <missing>
으로 표시되는 누락값이 있을 수 있습니다.
str = ["plane","jet","plane","helicopter",missing,"jet"]
str = 1x6 string
"plane" "jet" "plane" "helicopter" <missing> "jet"
string형 배열 str
을 categorical형 배열로 변환합니다. categorical
함수는 누락값인 string형 값을 정의되지 않은 categorical형 값으로 변환하여, <undefined>
로 표시합니다.
C = categorical(str)
C = 1x6 categorical
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형 배열 항목을 참조하십시오.
입력 배열에 서로 지나치게 가까이 있는 숫자형 값, datetime형 값 또는 duration형 값이 있는 경우,
categorical
함수는 해당 값을 중복 값으로 처리해 자릅니다. 예를 들어,categorical([1 1.00001])
은 입력 배열의 두 번째 요소를 자릅니다. 숫자형 데이터에서 범주를 생성하려면discretize
함수를 사용하십시오.
대안
또한 discretize
함수를 사용하여 숫자 데이터를 범주로 그룹화할 수 있습니다.
확장 기능
tall형 배열
메모리에 담을 수 없을 정도로 많은 행을 가진 배열을 계산할 수 있습니다.
사용법 관련 참고 및 제한 사항:
범주 목록을 알고 있는 경우
categorical(A,valueset)
를 사용하여 tall categorical형 배열을 만들 때 범주를 제공하는 것이 좋습니다. 범주가 제공되지 않으면 대다수 계산 시 범주 확인을 위해 MATLAB®에서 추가적인 데이터 통과를 수행해야 합니다.
자세한 내용은 tall형 배열 항목을 참조하십시오.
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
R2019a부터는 코드 생성을 위한 MATLAB 코드에 categorical형 배열을 사용할 수 있습니다. 자세한 내용은 Code Generation for Categorical Arrays (MATLAB Coder) 항목과 Categorical Array Limitations for Code Generation (MATLAB Coder) 항목을 참조하십시오.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
분산 배열
Parallel Computing Toolbox™를 사용하여 대규모 배열을 클러스터의 결합된 메모리에 걸쳐 분할할 수 있습니다.
사용법 관련 참고 및 제한 사항:
1개의 입력값으로 구성된 구문
B = categorical(A)
의 경우 범주의 순서는 정의되지 않습니다. 순서를 적용하려면valueset
및catnames
를 사용하십시오.
자세한 내용은 분산 배열을 사용하여 MATLAB 함수 실행 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2013b에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)