categorical형 배열로 데이터에 액세스하기
범주별 데이터 선택하기
값을 기준으로 데이터를 선택하는 것이 유용한 때가 자주 있습니다. 이 유형의 데이터 선택에는 단일 변수의 값을 기반으로 하여 논리형 벡터를 생성한 후 이 논리형 벡터를 사용하여 다른 변수에 포함된 값의 서브셋을 선택하는 작업이 포함될 수 있습니다. 숫자형 배열에서 특정 범위에 속하는 값을 찾는 방식으로 데이터 선택에 사용할 논리형 벡터를 생성할 수 있습니다. 또한, 특정 이산 값을 찾는 방식으로 논리형 벡터를 생성할 수도 있습니다. categorical형 배열을 사용하면 다음 작업을 쉽게 수행할 수 있습니다.
특정 범주에서 요소 선택. categorical형 배열의 경우, 논리 연산자
==
또는~=
를 사용하여 특정 범주에 속하거나 속하지 않는 데이터를 선택할 수 있습니다. 특정 범주 그룹에 속하는 데이터를 선택하려면ismember
함수를 사용하십시오.순서형 categorical형 배열의 경우, 부등식
>
,>=
,<
,<=
중 하나를 사용하여 특정 범주보다 크거나 작은 범주에 속하는 데이터를 찾을 수 있습니다.특정 범주에 속하는 데이터 삭제. 논리 연산자를 사용하여 특정 범주에 속하는 데이터를 포함시키거나 제외시킬 수 있습니다.
정의된 범주에 속하지 않는 요소 찾기. categorical형 배열은
<undefined>
로 정의된 범주에 속하지 않는 요소를 나타냅니다.isundefined
함수를 사용하여 정의된 값이 없는 관측값을 찾을 수 있습니다.
categorical형 배열을 사용한 일반적인 데이터 액세스 방법
이 예제에서는 categorical
형 배열을 사용하여 인덱싱하고 검색하는 방법을 보여줍니다. 유사한 방법으로 테이블 내에 저장된 categorical
형 배열을 사용하여 데이터에 액세스할 수 있습니다.
샘플 데이터 불러오기
100명의 환자로부터 수집한 샘플 데이터를 불러옵니다.
load patients
whos
Name Size Bytes Class Attributes Age 100x1 800 double Diastolic 100x1 800 double Gender 100x1 11412 cell Height 100x1 800 double LastName 100x1 11616 cell Location 100x1 14208 cell SelfAssessedHealthStatus 100x1 11540 cell Smoker 100x1 100 logical Systolic 100x1 800 double Weight 100x1 800 double
문자형 벡터로 구성된 셀형 배열에서 categorical형 배열 생성하기
셀형 배열 Location
과 SelfAssessedHealthStatus
에는 범주에 속한 데이터가 포함되어 있습니다. 각 셀형 배열은 문자형 벡터를 포함하는데, 이 문자형 벡터는 각각 세 가지 위치와 네 가지 건강 상태를 나타내는 고유한 값의 작은 집합에서 가져온 값입니다. Location
및 SelfAssessedHealthStatus
를 categorical
형 배열로 변환하려면 categorical
함수를 사용하십시오.
Location = categorical(Location); SelfAssessedHealthStatus = categorical(SelfAssessedHealthStatus);
단일 범주에 속하는 멤버 검색
categorical
형 배열의 경우, 논리 연산자 ==
및 ~=
를 사용하여 특정 범주에 속하거나 속하지 않는 데이터를 찾을 수 있습니다.
위치 Rampart General Hospital에서 관찰한 환자가 있는지 여부를 확인합니다.
any(Location == "Rampart General Hospital")
ans = logical
0
Rampart General Hospital에서 관찰한 환자는 없습니다.
범주 그룹에 속하는 멤버 검색
ismember
를 사용하여 특정 범주 그룹에 속하는 데이터를 찾을 수 있습니다. County General Hospital
또는 VA Hospital
에서 관찰한 환자에 대한 논리형 벡터를 생성합니다.
VA_CountyGenIndex = ... ismember(Location,{'County General Hospital','VA Hospital'});
VA_CountyGenIndex
는 categorical
형 배열 Location
에서 범주 County General Hospital
또는 VA Hospital
의 멤버인 각 요소에 대해 논리값 true
(1
)를 포함하는 100×1 논리형 배열입니다. 출력값 VA_CountyGenIndex
는 76개의 0이 아닌 요소를 포함합니다.
논리형 벡터 VA_CountyGenIndex
를 사용하여 County General Hospital
또는 VA Hospital
에서 관찰한 환자의 LastName
을 선택합니다.
VA_CountyGenPatients = LastName(VA_CountyGenIndex);
VA_CountyGenPatients
는 문자형 벡터로 구성된 76×1 셀형 배열입니다.
플로팅할 특정 범주의 요소 선택
summary
함수를 사용하여 범주 이름과 각 범주에 속하는 요소의 개수를 포함하는 요약을 출력합니다.
summary(Location)
County General Hospital 39 St. Mary's Medical Center 24 VA Hospital 37
Location
은 3개의 범주를 갖는 100×1 categorical
형 배열입니다. County General Hospital
은 39개 요소, St. Mary's Medical Center
는 24개 요소, VA Hospital
은 37개 요소를 가집니다.
summary
함수를 사용하여 SelfAssessedHealthStatus
에 대한 요약을 출력합니다.
summary(SelfAssessedHealthStatus)
Excellent 34 Fair 15 Good 40 Poor 11
SelfAssessedHealthStatus
는 4개 범주를 갖는 100×1 categorical
형 배열입니다.
논리 연산자 ==
를 사용하여 자신의 건강 상태를 Good
으로 평가한 환자의 연령에 액세스합니다. 그런 다음, 이 데이터의 히스토그램을 플로팅합니다.
figure() histogram(Age(SelfAssessedHealthStatus == 'Good')) title('Ages of Patients with Good Health Status')
histogram(Age(SelfAssessedHealthStatus == 'Good'))
은 자신의 건강 상태를 Good
으로 보고한 40명의 환자에 대한 연령 데이터를 플로팅합니다.
특정 범주의 데이터 삭제
논리 연산자를 사용하여 특정 범주의 데이터를 포함시키거나 제외할 수 있습니다. VA Hospital
에서 관찰한 환자를 작업 공간 변수 Age
와 Location
에서 모두 삭제합니다.
Age = Age(Location ~= "VA Hospital"); Location = Location(Location ~= "VA Hospital");
이제, Age
는 63×1 숫자형 배열이고, Location
은 63×1 categorical
형 배열입니다.
Location
의 범주와 각 범주에 포함된 요소의 개수를 나열합니다.
summary(Location)
County General Hospital 39 St. Mary's Medical Center 24 VA Hospital 0
VA Hospital
에서 관찰한 환자가 Location
에서 삭제되었지만, VA Hospital
은 여전히 범주로 남아 있습니다.
removecats
함수를 사용하여 Location
의 범주에서 VA Hospital
을 제거합니다.
Location = removecats(Location,"VA Hospital");
범주 VA Hospital
이 제거되었는지 확인합니다.
categories(Location)
ans = 2x1 cell
{'County General Hospital' }
{'St. Mary's Medical Center'}
Location
은 2개의 범주를 갖는 63×1 categorical
형 배열입니다.
요소 삭제하기
인덱싱을 통해 요소를 삭제할 수 있습니다. 예를 들어, Location(2:end)
를 사용하면 Location
의 첫 번째 요소를 제거하고 나머지 요소를 선택할 수 있습니다. 그러나 []
을 사용하면 더 쉽게 요소를 삭제할 수 있습니다.
Location(1) = []; summary(Location)
County General Hospital 38 St. Mary's Medical Center 24
Location
은 2개의 범주를 갖는 62×1 categorical
형 배열입니다. 첫 번째 요소를 삭제해도 동일한 범주의 다른 요소에는 아무런 영향을 주지 않으며 범주 자체도 삭제되지 않습니다.
정의되지 않은 요소가 있는지 테스트하기
Location
에서 범주 County General Hospital
을 제거합니다.
Location = removecats(Location,"County General Hospital");
categorical
형 배열인 Location
의 처음 8개 요소를 표시합니다.
Location(1:8)
ans = 8x1 categorical
St. Mary's Medical Center
<undefined>
St. Mary's Medical Center
St. Mary's Medical Center
<undefined>
<undefined>
St. Mary's Medical Center
St. Mary's Medical Center
범주 County General Hospital
을 제거한 후, 이전에 이 범주에 속해 있던 요소는 더 이상 Location
에 대해 정의된 어떠한 범주에도 속하지 않습니다. 어떠한 범주에도 속하지 않는 categorical
형 요소는 정의되지 않은 값으로, <undefined>
를 값으로 표시합니다.
함수 isundefined
를 사용하여 어떠한 범주에도 속하지 않는 categorical
형 배열의 요소를 찾습니다.
undefinedIndex = isundefined(Location);
undefinedIndex
는 Location
에서 정의되지 않은 모든 요소에 대해 논리값 true
(1
)를 가지는 62×1 categorical
형 배열입니다.
정의되지 않은 요소 설정하기
summary
함수를 사용하여 Location
에서 정의되지 않은 요소의 개수를 출력합니다.
summary(Location)
St. Mary's Medical Center 24 <undefined> 38
Location
의 첫 번째 요소는 범주 St. Mary's Medical Center
에 속합니다. 첫 번째 요소를 정의되지 않은 값으로 설정하여 더 이상 어떤 범주에도 속하지 않도록 만듭니다. ''
, ""
, '<undefined>'
, string(nan)
또는 missing
을 요소로 할당하여 정의되지 않은 요소를 categorical
형 배열로 만들 수 있습니다. 그러한 값을 categorical
형 배열의 요소에 할당하면 값은 정의되지 않은 값으로 변환됩니다.
Location(1) = "";
summary(Location)
St. Mary's Medical Center 23 <undefined> 39
범주를 제거하거나 다른 요소의 범주를 변경하지 않고도 선택한 요소를 undefined
로 설정할 수 있습니다. 정의되지 않은 요소를 설정하여 알 수 없는 값을 갖는 요소를 표시합니다.
정의되지 않은 요소를 사용하여 categorical형 배열 사전할당(Preallocation)
성능을 개선하기 위해, 정의되지 않은 요소를 사용하여 categorical
형 배열의 크기를 사전할당할 수 있습니다. 알려진 위치를 갖는 요소만 포함하는 categorical
형 배열을 만듭니다.
definedIndex = ~isundefined(Location); newLocation = Location(definedIndex); summary(newLocation)
St. Mary's Medical Center 23
200×1 categorical
형 배열이 되도록 newLocation
의 크기를 확장합니다. 마지막 새 요소를 정의되지 않은 요소로 설정합니다. 그 외 모든 새 요소도 정의되지 않은 값에 할당됩니다. 23개의 원래 요소는 기존 값을 유지합니다.
newLocation(200) = "";
summary(newLocation)
St. Mary's Medical Center 23 <undefined> 177
newLocation
은 추후에 값을 저장할 수 있는 공간을 배열에 가지고 있습니다.
참고 항목
categorical
| categories
| summary
| any
| histogram
| removecats
| isundefined
관련 예제
- categorical형 배열 생성하기
- 테이블 변수의 텍스트를 categorical형으로 변환하기
- categorical형 데이터 플로팅하기
- categorical형 배열 요소 비교하기
- 보호된 categorical형 배열을 사용하기