이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
테이블의 데이터에 액세스하기
테이블은 변수에 열 방향 데이터를 저장하는 컨테이너입니다. 테이블 변수는 모든 변수의 행 개수가 동일한 경우에 한해 서로 다른 데이터형과 크기를 가질 수 있습니다. 테이블 변수는 구조체 필드와 마찬가지로 이름을 가질 수 있습니다. 테이블 행은 이름을 가질 수 있지만 행 이름이 필수적인 것은 아닙니다. 테이블 데이터에 액세스하거나 이를 수정하려면 이름 또는 숫자형 인덱스를 사용하여 행 및 변수에 들어 있는 요소를 참조하십시오.
테이블의 요소를 참조하는 일반적인 이유는 다음과 같습니다.
행과 변수 재정렬 또는 제거
배열을 새 행 또는 새 변수로 추가
함수에 대한 입력 인수로 사용할, 데이터로 구성된 배열 추출
테이블 데이터에 액세스하거나 이를 수정하는 또 다른 방법은 시각적 편집을 위해 데이터를 변수 편집기에서 여는 것입니다. 테이블을 열려면 작업 공간 브라우저에서 테이블을 더블 클릭하거나 openvar
함수를 사용하십시오.
테이블 인덱싱 구문 요약
사용하는 인덱싱 유형에 따라 테이블에서 추출된 하위 테이블 또는 배열에 액세스할 수 있습니다. 인덱싱에 사용하는 방법은 다음과 같습니다.
괄호 ()는 선택한 행과 변수가 있는 테이블을 반환합니다.
점 표기법은 변수의 내용을 배열로 반환합니다.
중괄호 {}는 선택한 행과 변수의 내용을 결합한 배열을 반환합니다.
이름, 숫자형 인덱스 또는 데이터형으로 행과 변수를 지정할 수 있습니다.
R2019b부터 변수 이름과 행 이름에 공백, 비 ASCII 문자 등 모든 문자를 사용할 수 있습니다. 또한 영문자뿐만 아니라 어떤 문자로도 시작할 수 있습니다. 변수 이름과 행 이름은 유효한 MATLAB® 식별자(유효 여부는
isvarname
함수의 판정에 따름)가 아니어도 됩니다.R2022a부터 이름으로 행 및 변수를 지정할 경우
pattern
객체를 사용하여 이름을 지정할 수 있습니다. 예를 들어,"Var" + digitsPattern
은Var
로 시작하고 임의 개수의 숫자로 끝나는 모든 이름과 일치합니다.
출력값 유형 | 구문 | 행 | 변수 | 예제 |
---|---|---|---|---|
지정된 행과 변수를 포함하는 테이블 |
| 지정 방법:
| 지정 방법:
|
|
지정된 데이터형의 변수를 포함하는 테이블 |
| 지정 방법:
|
|
|
하나의 변수에서 데이터를 추출하는 배열 |
| 지정 안 함 | 지정 방법:
|
|
하나의 변수와 지정된 행에서 데이터를 추출하는 배열 |
| 배열의 숫자형 인덱스 또는 논리형 인덱스로 지정 | 지정 방법:
|
|
지정된 행과 변수의 데이터를 결합하는 배열 |
| 지정 방법:
| 지정 방법:
|
|
지정된 행과 지정된 데이터형을 갖는 변수의 데이터를 결합한 배열 |
| 지정 방법:
|
|
|
모든 행과 변수의 데이터를 결합하는 배열 |
| 지정 안 함 | 지정 안 함 |
|
지정된 행과 변수를 사용한 테이블 인덱싱
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
, Height
, Weight
, Smoker
및 SelfAssessedHealthStatus
작업 공간 변수로 채웁니다. LastName
의 고유 식별자를 행 이름으로 사용합니다. T
는 100개 행과 5개 변수로 구성된 100×5 테이블입니다. (행 이름으로 구성된 벡터를 지정해도 테이블 변수로 간주되지 않습니다.) 또한, SelfAssessedHealthStatus
를 categorical
형 변수로 변환합니다. 여기에는 고유한 값 Excellent
, Good
, Fair
및 Poor
만 포함되기 때문입니다. 변수에 범주로 생각할 수 있는 고정된 값 집합이 있는 경우 변수를 categorical
형 배열로 처리하는 것이 유용할 수 있습니다.
SelfAssessedHealthStatus = categorical(SelfAssessedHealthStatus); T = table(Age,Height,Weight,Smoker,SelfAssessedHealthStatus,... 'RowNames',LastName)
T=100×5 table
Age Height Weight Smoker SelfAssessedHealthStatus
___ ______ ______ ______ ________________________
Smith 38 71 176 true Excellent
Johnson 43 69 163 false Fair
Williams 38 64 131 false Good
Jones 40 67 133 false Fair
Brown 49 64 119 false Good
Davis 46 68 142 false Good
Miller 33 64 142 true Good
Wilson 40 68 180 false Good
Moore 28 68 183 false Excellent
Taylor 31 66 132 false Excellent
Anderson 45 68 128 false Excellent
Thomas 42 66 137 false Poor
Jackson 25 71 174 false Poor
White 39 72 202 true Excellent
Harris 36 65 129 false Good
Martin 48 71 181 true Good
⋮
숫자형 인덱스 또는 end
키워드를 사용한 인덱싱
T
에서 처음 5개 행과 모든 변수를 포함하는 하위 테이블을 생성합니다. 원하는 행과 변수를 지정하려면 숫자형 인덱스를 괄호로 묶어 사용하십시오. 이러한 유형의 인덱싱은 숫자형 배열의 요소를 참조하는 것과 유사합니다.
firstRows = T(1:5,:)
firstRows=5×5 table
Age Height Weight Smoker SelfAssessedHealthStatus
___ ______ ______ ______ ________________________
Smith 38 71 176 true Excellent
Johnson 43 69 163 false Fair
Williams 38 64 131 false Good
Jones 40 67 133 false Fair
Brown 49 64 119 false Good
end
키워드를 사용하여 마지막 행 또는 변수를 나타낼 수도 있습니다. end
키워드를 사용하여 테이블의 마지막 5개 행의 요소를 참조합니다.
lastRows = T(end-4:end,:)
lastRows=5×5 table
Age Height Weight Smoker SelfAssessedHealthStatus
___ ______ ______ ______ ________________________
Alexander 25 69 171 true Good
Russell 44 69 188 true Good
Griffin 49 70 186 false Fair
Diaz 45 68 172 true Good
Hayes 48 66 177 false Fair
괄호 안에는 숫자형 인덱스 외에도 행 이름이나 변수 이름을 사용할 수 있습니다. (이 사례에서는 행 인덱스와 콜론을 사용하는 편이 행 이름이나 변수 이름을 사용하는 것보다 더 간단합니다.)
이름을 사용한 인덱싱
성이 Griffin
, Diaz
및 Hayes
인 환자에 대한 데이터를 모두 선택합니다. T
의 행 이름이 환자의 성이므로 행 이름을 사용하여 T
의 요소를 참조하십시오.
rowsByName = T(["Griffin","Diaz","Hayes"],:)
rowsByName=3×5 table
Age Height Weight Smoker SelfAssessedHealthStatus
___ ______ ______ ______ ________________________
Griffin 49 70 186 false Fair
Diaz 45 68 172 true Good
Hayes 48 66 177 false Fair
이름으로 변수를 선택할 수도 있습니다. T
의 처음 5개 행과 Height
변수 및 Weight
변수만 포함된 테이블을 생성합니다. 그런 다음 이를 표시합니다.
variablesByName = T(1:5,["Height","Weight"])
variablesByName=5×2 table
Height Weight
______ ______
Smith 71 176
Johnson 69 163
Williams 64 131
Jones 67 133
Brown 64 119
테이블 변수 이름이 유효한 MATLAB® 식별자일 필요는 없습니다. 이름은 공백과 비ASCII 문자를 포함할 수 있으며 어떤 문자로도 시작할 수 있습니다.
예를 들어, renamevars
함수를 사용하여 SelfAssessedHealthStatus
변수의 이름을 변경합니다. 공백과 대시를 추가하여 변수 이름을 더 읽기 쉽게 만듭니다. 그런 다음, 변수 이름을 사용하여 T
의 요소를 참조합니다.
T = renamevars(T,"SelfAssessedHealthStatus","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
패턴을 사용하여 행 또는 변수 이름 지정하기
테이블 행 또는 변수 이름을 지정할 경우 일치하는 텍스트에 대한 규칙을 정의하는 패턴을 사용할 수 있습니다. 예를 들어, "Var"
로 시작하고 임의의 숫자가 그 다음에 오는 변수 이름을 일치시킬 수 있습니다. pattern
객체, string형 및 연산자를 사용하여 패턴 표현식을 작성할 수 있습니다.
예를 들어, 행 이름을 기준으로 T
의 요소를 참조하여 환자의 성이 문자 G
로 시작하는 모든 행을 찾아보겠습니다. wildcardPattern
함수를 사용하여 G
다음에 있는 모든 문자를 일치시킬 수 있습니다.
beginsWithG = "G" + wildcardPattern
beginsWithG = pattern
Matching:
"G" + wildcardPattern
T(beginsWithG,:)
ans=6×5 table
Age Height Weight Smoker Self-Assessed Health Status
___ ______ ______ ______ ___________________________
Garcia 27 69 131 true Fair
Green 44 71 193 false Good
Gonzalez 35 66 118 false Fair
Gray 31 64 130 false Excellent
Gonzales 48 71 174 false Good
Griffin 49 70 186 false Fair
변수 이름을 기준으로 T
의 요소를 참조하여 이름의 일부로 Status
를 포함하는 이름을 모두 찾습니다.
containsStatus = wildcardPattern + "Status" + wildcardPattern;
T(1:5,containsStatus)
ans=5×1 table
Self-Assessed Health Status
___________________________
Smith Excellent
Johnson Fair
Williams Good
Jones Fair
Brown Good
변수의 데이터형을 기준으로 인덱싱하기
이름 또는 숫자를 사용하여 변수를 지정하는 대신, 동일한 데이터형을 가진 모든 변수와 일치하는 데이터형 첨자를 생성할 수 있습니다.
먼저 vartype
함수를 사용하여 숫자형 테이블 변수와 일치하는 데이터형 첨자를 생성합니다.
subscriptObject = vartype("numeric")
subscriptObject = table vartype subscript: Select table variables matching the type 'numeric'
T
에서 숫자형 변수만 포함된 테이블을 생성합니다. Smoker
변수는 논리형 변수이고 Self-Assessed Health Status
는 categorical
형 변수이므로 제외됩니다.
onlyNumericVariables = T(:,subscriptObject)
onlyNumericVariables=100×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
Davis 46 68 142
Miller 33 64 142
Wilson 40 68 180
Moore 28 68 183
Taylor 31 66 132
Anderson 45 68 128
Thomas 42 66 137
Jackson 25 71 174
White 39 72 202
Harris 36 65 129
Martin 48 71 181
⋮
값이 논리 조건을 충족하는 행 찾기
patients
MAT 파일의 데이터에서 크기가 더 작은 테이블을 하나 더 생성합니다.
load patients.mat
T = table(Age,Height,Weight,Smoker);
테이블에서 값이 논리 조건을 충족하는 행을 찾으려면 논리형 인덱싱을 사용하십시오. 먼저 점 표기법을 사용하여 테이블 변수에 액세스합니다. 그런 다음 변수의 값이 지정된 조건을 충족하는 논리형 인덱스로 구성된 배열을 생성할 수 있습니다. 논리형 인덱스를 사용하여 테이블의 요소를 참조합니다.
점 표기법을 사용하여 테이블 변수에서 데이터 추출하기
하나의 테이블 변수에서 데이터를 추출하려면 점 표기법을 사용하십시오.
예를 들어, 테이블 변수 Weight
에서 숫자형 값의 히스토그램을 플로팅해 보겠습니다. 점 표기법을 사용하여 T.Weight
를 숫자형 배열로 처리할 수 있습니다. T.Weight
는 100개 행으로 구성된 배정밀도 열 벡터입니다.
histogram(T.Weight)
title("Patient Weights")
논리 조건을 충족하는 행의 요소 참조하기
논리형 인덱스로 구성된 배열을 사용하여 배열 또는 테이블의 요소를 참조할 수 있습니다. 일반적으로, 논리 조건을 충족하는 테이블 변수 값을 확인하는 논리식을 사용합니다. 표현식 결과는 논리형 인덱스로 구성된 배열입니다.
예를 들어, 나이가 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×4 table
Age Height Weight Smoker
___ ______ ______ ______
38 71 176 true
38 64 131 false
33 64 142 true
28 68 183 false
31 66 132 false
25 71 174 false
39 72 202 true
36 65 129 false
32 69 191 true
27 69 131 true
37 70 179 false
39 64 117 false
28 65 123 true
25 70 189 false
39 63 143 false
25 63 114 false
⋮
하나의 논리식을 사용하여 여러 조건을 일치시킬 수 있습니다. 40
세 미만인 흡연 환자에 대한 행을 표시해 보겠습니다.
rows = (T.Smoker==true & T.Age<40); T(rows,:)
ans=18×4 table
Age Height Weight Smoker
___ ______ ______ ______
38 71 176 true
33 64 142 true
39 72 202 true
32 69 191 true
27 69 131 true
28 65 123 true
30 67 186 true
33 66 180 true
39 71 164 true
37 70 194 true
33 67 115 true
31 72 178 true
28 69 189 true
39 68 182 true
37 65 120 true
31 66 141 true
⋮
변수 이름 또는 표현식이 포함된 점 표기법
점 표기법을 사용하여 인덱싱할 경우 변수를 지정할 수 있는 두 가지 방법이 있습니다.
이름을 따옴표 없이 사용합니다. 예를 들어,
T.Date
는 변수"Date"
를 지정합니다.점 다음에 괄호로 묶은 표현식을 사용합니다. 예를 들어,
T.("Start Date")
는 변수"Start Date"
를 지정합니다.
테이블 변수 이름이 유효한 MATLAB® 식별자이기도 하다면 첫 번째 구문을 사용하십시오. (유효한 식별자는 영문자로 시작하며 영문자, 숫자 및 밑줄만 포함합니다.)
다음을 지정할 경우에는 두 번째 구문을 사용하십시오.
테이블에서의 변수 위치를 나타내는 숫자.
유효한 MATLAB 식별자가 아닌 변수 이름.
출력값이 테이블에 있는 변수의 이름이거나 테이블에 추가하는 변수의 이름인 함수. 함수의 출력값은 문자형 벡터 또는 string형 스칼라여야 합니다.
예를 들어, patients
MAT 파일에서 테이블을 만들어 보겠습니다. 그런 다음, 점 표기법을 사용하여 테이블 변수의 내용에 액세스합니다.
load patients
T = table(Age,Height,Weight,Smoker);
테이블에서의 위치로 변수를 지정하려면 숫자를 사용하십시오. 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
에 추가해 보겠습니다.
SelfAssessedHealthStatus = categorical(SelfAssessedHealthStatus); T = addvars(T,SelfAssessedHealthStatus,'NewVariableNames',"Self-Assessed Health Status"); T(1:5,:)
ans=5×5 table
Age Height Weight Smoker Self-Assessed Health Status
___ ______ ______ ______ ___________________________
38 71 176 true Excellent
43 69 163 false Fair
38 64 131 false Good
40 67 133 false Fair
49 64 119 false Good
점 표기법을 사용하여 새 테이블 변수에 액세스합니다. 처음 5개 요소를 표시합니다.
healthStatus = T.("Self-Assessed Health Status");
healthStatus(1:5)
ans = 5x1 categorical
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×5 table
Age Height Weight Smoker 14-Aug-2023 Self Report
___ ______ ______ ______ _______________________
38 71 176 true Excellent
43 69 163 false Fair
38 64 131 false Good
40 67 133 false Fair
49 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{:,:}
과 동일하며, 여기서 콜론은 모든 행과 모든 변수를 나타냅니다. 테이블에 행 이름이 포함된 경우 행 이름은 T.Variables
의 출력에 포함되지 않습니다. 행 이름은 테이블 변수에 저장되지 않습니다. 행 이름은 테이블을 설명하는 메타데이터의 일부입니다.
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
| renamevars