이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
테이블의 데이터에 액세스하기
테이블은 변수에 열 방향 데이터를 저장하는 컨테이너입니다. 테이블 변수는 모든 변수의 행 개수가 동일한 경우에 한해 서로 다른 데이터형과 크기를 가질 수 있습니다. 테이블 변수는 구조체 필드와 마찬가지로 이름을 가질 수 있습니다. 테이블 행은 이름을 가질 수 있지만 행 이름이 필수적인 것은 아닙니다. 테이블의 데이터에 액세스하려면 이름 또는 숫자형 인덱스를 사용하여 행 및 변수에 들어 있는 요소를 참조하십시오.
테이블의 요소를 참조하는 일반적인 이유는 다음과 같습니다.
행과 변수 재정렬 또는 제거
배열을 새 행 또는 새 변수로 추가
함수에 대한 입력 인수로 사용할, 데이터로 구성된 배열 추출
테이블 인덱싱 구문 요약
사용하는 인덱싱 유형에 따라 테이블에서 추출된 하위 테이블 또는 배열에 액세스할 수 있습니다. 인덱싱에 사용하는 방법은 다음과 같습니다.
괄호 ()는 선택한 행과 변수가 있는 테이블을 반환합니다.
점 표기법은 변수의 내용을 배열로 반환합니다.
중괄호 {}는 선택한 행과 변수의 내용을 결합한 배열을 반환합니다.
이름, 숫자형 인덱스 또는 데이터형으로 행과 변수를 지정할 수 있습니다. R2019b부터 변수 이름과 행 이름에 공백, 비ASCII 문자 등 모든 문자를 사용할 수 있습니다. 또한 영문자뿐만 아니라 어떤 문자로도 시작할 수 있습니다. 변수 이름과 행 이름은 유효한 MATLAB® 식별자(유효 여부는 isvarname
함수의 판정에 따름)가 아니어도 됩니다.
출력값 유형 | 구문 | 행 | 변수 | 예제 |
---|---|---|---|---|
지정된 행과 변수를 포함하는 테이블 |
| 지정 방법:
| 지정 방법:
|
|
지정된 데이터형의 변수를 포함하는 테이블 |
| 지정 방법:
|
|
|
하나의 변수에서 데이터를 추출하는 배열 |
| 지정 안 함 | 지정 방법:
|
|
하나의 변수와 지정된 행에서 데이터를 추출하는 배열 |
| 배열의 숫자형 인덱스 또는 논리형 인덱스로 지정 | 지정 방법:
|
|
지정된 행과 변수의 데이터를 결합하는 배열 |
| 지정 방법:
| 지정 방법:
|
|
지정된 행과 지정된 데이터형을 갖는 변수의 데이터를 결합한 배열 |
| 지정 방법:
|
|
|
모든 행과 변수의 데이터를 결합하는 배열 |
| 지정 안 함 | 지정 안 함 |
|
지정된 행과 변수를 포함하는 테이블
patients
MAT 파일에서 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
테이블을 생성하고 Age
, Gender
, Height
, Weight
및 Smoker
작업 공간 변수로 채웁니다. LastName
의 고유 식별자를 행 이름으로 사용합니다. T
는 100×5 테이블입니다. (행 이름을 지정해도 테이블 변수로 간주되지 않습니다.)
T = table(Age,Gender,Height,Weight,Smoker,... 'RowNames',LastName)
T=100×5 table
Age Gender Height Weight Smoker
___ __________ ______ ______ ______
Smith 38 {'Male' } 71 176 true
Johnson 43 {'Male' } 69 163 false
Williams 38 {'Female'} 64 131 false
Jones 40 {'Female'} 67 133 false
Brown 49 {'Female'} 64 119 false
Davis 46 {'Female'} 68 142 false
Miller 33 {'Female'} 64 142 true
Wilson 40 {'Male' } 68 180 false
Moore 28 {'Male' } 68 183 false
Taylor 31 {'Female'} 66 132 false
Anderson 45 {'Female'} 68 128 false
Thomas 42 {'Female'} 66 137 false
Jackson 25 {'Male' } 71 174 false
White 39 {'Male' } 72 202 true
Harris 36 {'Female'} 65 129 false
Martin 48 {'Male' } 71 181 true
⋮
숫자형 인덱스를 사용한 인덱싱
T
에서 처음 5개 행과 모든 변수를 포함하는 하위 테이블을 생성합니다. 원하는 행과 변수를 지정하려면 숫자형 인덱스를 괄호로 묶어 사용하십시오. 이러한 유형의 인덱싱은 숫자형 배열의 요소를 참조하는 것과 유사합니다.
T1 = T(1:5,:)
T1=5×5 table
Age Gender Height Weight Smoker
___ __________ ______ ______ ______
Smith 38 {'Male' } 71 176 true
Johnson 43 {'Male' } 69 163 false
Williams 38 {'Female'} 64 131 false
Jones 40 {'Female'} 67 133 false
Brown 49 {'Female'} 64 119 false
T1
은 5×5 테이블입니다.
괄호 안에는 숫자형 인덱스 외에도 행 이름이나 변수 이름을 사용할 수 있습니다. (이 사례에서는 행 인덱스와 콜론을 사용하는 편이 행 이름이나 변수 이름을 사용하는 것보다 더 간단합니다.)
이름을 사용한 인덱싱
성이 'Williams'
또는 'Brown'
인 환자에 대한 데이터를 모두 선택합니다. T
의 행 이름이 환자의 성이므로 행 이름을 사용하여 T
의 요소를 참조하십시오.
T2 = T({'Williams','Brown'},:)
T2=2×5 table
Age Gender Height Weight Smoker
___ __________ ______ ______ ______
Williams 38 {'Female'} 64 131 false
Brown 49 {'Female'} 64 119 false
T2
는 2×5 테이블입니다.
이름으로 변수를 선택할 수도 있습니다. T
의 처음 5개 행과 Height
변수 및 Weight
변수만 포함된 테이블을 생성합니다. 그런 다음 이를 표시합니다.
T3 = T(1:5,{'Height','Weight'})
T3=5×2 table
Height Weight
______ ______
Smith 71 176
Johnson 69 163
Williams 64 131
Jones 67 133
Brown 64 119
테이블 변수 이름이 유효한 MATLAB 식별자일 필요는 없습니다. 이름은 공백과 비ASCII 문자를 포함할 수 있으며 어떤 문자로도 시작할 수 있습니다.
공백과 대시가 포함된 변수 이름을 T
에 추가합니다. 그런 다음, 변수 이름을 사용하여 T
의 요소를 참조합니다.
T = addvars(T,SelfAssessedHealthStatus,'NewVariableNames','Self-Assessed Health Status'); T(1:5,{'Age','Smoker','Self-Assessed Health Status'})
ans=5×3 table
Age Smoker Self-Assessed Health Status
___ ______ ___________________________
Smith 38 true {'Excellent'}
Johnson 43 false {'Fair' }
Williams 38 false {'Good' }
Jones 40 false {'Fair' }
Brown 49 false {'Good' }
데이터형 첨자 지정하기
이름 또는 숫자를 사용하여 변수를 지정하는 대신, 동일한 데이터형을 가진 모든 변수와 일치하는 데이터형 첨자를 생성할 수 있습니다.
먼저 숫자형 테이블 변수와 일치하는 데이터형 첨자를 생성합니다.
S = vartype('numeric')
S = table vartype subscript: Select table variables matching the type 'numeric' See Access Data in a Table.
T
에서 숫자형 변수와 처음 5개 행만 포함된 테이블을 생성합니다.
T4 = T(1:5,S)
T4=5×3 table
Age Height Weight
___ ______ ______
Smith 38 71 176
Johnson 43 69 163
Williams 38 64 131
Jones 40 67 133
Brown 49 64 119
점 표기법과 논리값을 사용하여 데이터 추출하기
patients
MAT 파일에서 테이블을 생성합니다. 그런 다음, 점 표기법을 사용하여 테이블 변수에서 데이터를 추출합니다. 조건을 충족하는 테이블 변수 값에서 생성된 논리형 인덱스를 사용하여 인덱싱할 수도 있습니다.
load patients T = table(Age,Gender,Height,Weight,Smoker,... 'RowNames',LastName);
변수에서 데이터 추출하기
하나의 변수에서 데이터를 추출하려면 점 표기법을 사용하십시오. 변수 Weight
에서 숫자형 값을 추출해 보겠습니다. 그런 다음, 이 값의 히스토그램을 플로팅합니다.
histogram(T.Weight)
title('Patient Weight')
T.Weight
는 100개 행으로 구성된 배정밀도 열 벡터입니다.
논리형 인덱싱을 사용하여 행 선택하기
논리형 인덱스로 구성된 배열을 사용하여 배열 또는 테이블의 요소를 참조할 수 있습니다. 일반적으로, 조건을 충족하는 테이블 변수 값을 확인하는 논리식을 사용합니다. 표현식 결과는 논리형 인덱스로 구성된 배열입니다.
예를 들어, 나이가 40
세 미만인 환자와 일치하는 논리형 인덱스를 생성해 보겠습니다.
rows = T.Age < 40
rows = 100x1 logical array
1
0
1
0
0
0
1
0
1
1
⋮
나이가 40
세 미만인 환자의 키를 추출하려면 rows
를 사용하여 Height
변수의 요소를 참조하십시오. 40
세 미만인 환자는 56명입니다.
T.Height(rows)
ans = 56×1
71
64
64
68
66
71
72
65
69
69
⋮
논리형 인덱스를 사용하여 테이블의 요소를 참조할 수 있습니다. 40
세 미만인 환자에 대한 T
의 행을 표시해 보겠습니다.
T(rows,:)
ans=56×5 table
Age Gender Height Weight Smoker
___ __________ ______ ______ ______
Smith 38 {'Male' } 71 176 true
Williams 38 {'Female'} 64 131 false
Miller 33 {'Female'} 64 142 true
Moore 28 {'Male' } 68 183 false
Taylor 31 {'Female'} 66 132 false
Jackson 25 {'Male' } 71 174 false
White 39 {'Male' } 72 202 true
Harris 36 {'Female'} 65 129 false
Thompson 32 {'Male' } 69 191 true
Garcia 27 {'Female'} 69 131 true
Martinez 37 {'Male' } 70 179 false
Rodriguez 39 {'Female'} 64 117 false
Walker 28 {'Female'} 65 123 true
Hall 25 {'Male' } 70 189 false
Allen 39 {'Female'} 63 143 false
Young 25 {'Female'} 63 114 false
⋮
하나의 논리식을 사용하여 여러 조건을 일치시킬 수 있습니다. 40
세 미만인 흡연 환자에 대한 행을 표시해 보겠습니다.
rows = (T.Smoker==true & T.Age<40); T(rows,:)
ans=18×5 table
Age Gender Height Weight Smoker
___ __________ ______ ______ ______
Smith 38 {'Male' } 71 176 true
Miller 33 {'Female'} 64 142 true
White 39 {'Male' } 72 202 true
Thompson 32 {'Male' } 69 191 true
Garcia 27 {'Female'} 69 131 true
Walker 28 {'Female'} 65 123 true
King 30 {'Male' } 67 186 true
Nelson 33 {'Male' } 66 180 true
Mitchell 39 {'Male' } 71 164 true
Turner 37 {'Male' } 70 194 true
Sanders 33 {'Female'} 67 115 true
Price 31 {'Male' } 72 178 true
Jenkins 28 {'Male' } 69 189 true
Long 39 {'Male' } 68 182 true
Patterson 37 {'Female'} 65 120 true
Flores 31 {'Female'} 66 141 true
⋮
변수 이름 또는 표현식이 포함된 점 표기법
점 표기법을 사용하여 인덱싱할 경우 변수를 지정할 수 있는 두 가지 방법이 있습니다.
이름을 따옴표 없이 사용합니다. 예를 들어,
T.Date
는 변수'Date'
를 지정합니다.점 다음에 괄호로 묶은 표현식을 사용합니다. 예를 들어,
T.('Start Date')
는 변수'Start Date'
를 지정합니다.
테이블 변수 이름이 유효한 MATLAB® 식별자이기도 하다면 첫 번째 구문을 사용하십시오. (유효한 식별자는 영문자로 시작하며 영문자, 숫자 및 밑줄만 포함합니다.)
다음을 지정할 경우에는 두 번째 구문을 사용하십시오.
테이블에서의 변수 위치를 나타내는 숫자.
유효한 MATLAB 식별자가 아닌 변수 이름.
출력값이 테이블에 있는 변수의 이름이거나 테이블에 추가하는 변수의 이름인 함수. 함수의 출력값은 문자형 벡터 또는 string형 스칼라여야 합니다.
예를 들어, patients
MAT 파일에서 테이블을 만들어 보겠습니다. 그런 다음, 점 표기법을 사용하여 테이블 변수의 내용에 액세스합니다.
load patients T = table(Age,Gender,Height,Weight,Smoker,... 'RowNames',LastName);
테이블에서의 위치로 변수를 지정하려면 숫자를 사용하십시오. Age
는 T
의 첫 번째 변수이므로 숫자 1
을 사용하여 위치를 지정합니다.
T.(1)
ans = 100×1
38
43
38
40
49
46
33
40
28
31
⋮
이름으로 변수를 지정하려면 이름을 따옴표로 묶으십시오. 'Age'
는 유효한 식별자이므로 T.Age
또는 T.('Age')
를 사용하여 지정할 수 있습니다.
T.('Age')
ans = 100×1
38
43
38
40
49
46
33
40
28
31
⋮
유효한 MATLAB 식별자가 아닌 테이블 변수 이름을 지정할 수 있습니다. 변수 이름은 공백과 비ASCII 문자를 포함할 수 있으며 어떤 문자로도 시작할 수 있습니다. 하지만 점 표기법을 사용하여 이러한 이름을 가진 테이블 변수에 액세스할 때는 괄호를 사용하여 이름을 지정해야 합니다.
공백과 대시가 있는 변수 이름을 T
에 추가합니다.
T = addvars(T,SelfAssessedHealthStatus,'NewVariableNames','Self-Assessed Health Status'); T(1:5,:)
ans=5×6 table
Age Gender Height Weight Smoker Self-Assessed Health Status
___ __________ ______ ______ ______ ___________________________
Smith 38 {'Male' } 71 176 true {'Excellent'}
Johnson 43 {'Male' } 69 163 false {'Fair' }
Williams 38 {'Female'} 64 131 false {'Good' }
Jones 40 {'Female'} 67 133 false {'Fair' }
Brown 49 {'Female'} 64 119 false {'Good' }
점 표기법을 사용하여 새 테이블 변수에 액세스합니다. 처음 5개 요소를 표시합니다.
C = T.('Self-Assessed Health Status');
C(1:5)
ans = 5x1 cell
{'Excellent'}
{'Fair' }
{'Good' }
{'Fair' }
{'Good' }
함수의 출력값을 변수 이름으로 사용할 수도 있습니다. T.('Self-Assessed Health Status')
변수를 삭제해 보겠습니다. 그런 다음 이름에 오늘 날짜가 포함된 변수로 바꿉니다.
T.('Self-Assessed Health Status') = []; T.(string(datetime('today')) + ' Self Report') = SelfAssessedHealthStatus; T(1:5,:)
ans=5×6 table
Age Gender Height Weight Smoker 08-Nov-2021 Self Report
___ __________ ______ ______ ______ _______________________
Smith 38 {'Male' } 71 176 true {'Excellent'}
Johnson 43 {'Male' } 69 163 false {'Fair' }
Williams 38 {'Female'} 64 131 false {'Good' }
Jones 40 {'Female'} 67 133 false {'Fair' }
Brown 49 {'Female'} 64 119 false {'Good' }
지정된 행과 변수에서 데이터 추출하기
중괄호를 사용하여 인덱싱하면 테이블에서 데이터가 추출되며 그 결과로 하위 테이블이 아니라 배열이 생성됩니다. 이러한 차이점을 제외하고는, 괄호를 사용하여 인덱싱할 때처럼 숫자, 이름 및 데이터형 첨자를 사용하여 행과 변수를 지정할 수 있습니다. 테이블에서 값을 추출하려면 중괄호를 사용하십시오. 여러 테이블 변수에서 값을 추출할 경우, 해당 변수는 변수 결합이 허용되는 데이터형을 가져야 합니다.
행과 변수 지정하기
patients
파일의 숫자형 배열과 논리형 배열에서 테이블을 생성해 보겠습니다.
load patients T = table(Age,Height,Weight,Smoker,... 'RowNames',LastName);
T
의 여러 변수에서 데이터를 추출합니다. 점 표기법과 달리, 중괄호를 사용하여 인덱싱하면 여러 테이블 변수에서 값을 추출하고 이 값을 하나의 배열로 결합할 수 있습니다.
처음 5명의 환자에 대한 키와 체중을 추출합니다. 숫자형 인덱스를 사용하여 처음 5개 행을 선택하고, 변수 이름을 사용하여 변수 Height
및 Weight
를 선택합니다.
A = T{1:5,{'Height','Weight'}}
A = 5×2
71 176
69 163
64 131
67 133
64 119
A
는 테이블이 아니라 5×2 숫자형 배열입니다.
하나의 변수 이름을 지정하면 중괄호 인덱싱은 점 표기법을 사용하여 얻은 것과 동일한 배열을 생성합니다. 하지만 중괄호 인덱싱을 사용할 경우 행과 변수를 모두 지정해야 합니다. 예를 들어, 구문 T.Height
와 T{:,'Height'}
는 동일한 배열을 반환합니다.
모든 행과 변수에서 데이터 추출하기
모든 테이블 변수가 변수 결합이 허용되는 데이터형을 가지면 T.Variables
구문을 사용하여 모든 테이블 데이터를 배열에 넣을 수 있습니다. 이 구문은 T{:,:}
과 동일하며, 여기서 콜론은 모든 행과 모든 변수를 나타냅니다.
A2 = T.Variables
A2 = 100×4
38 71 176 1
43 69 163 0
38 64 131 0
40 67 133 0
49 64 119 0
46 68 142 0
33 64 142 1
40 68 180 0
28 68 183 0
31 66 132 0
⋮
참고 항목
table
| histogram
| addvars
| vartype