액세스 3가지 조건으로 조회하는 방법

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

테이블의 데이터에 액세스하기

테이블은 변수에 열 방향 데이터를 저장하는 컨테이너입니다. 테이블 변수는 모든 변수의 행 개수가 동일한 경우에 한해 서로 다른 데이터형과 크기를 가질 수 있습니다. 테이블 변수는 구조체 필드와 마찬가지로 이름을 가질 수 있습니다. 테이블 행은 이름을 가질 수 있지만 행 이름이 필수적인 것은 아닙니다. 테이블의 데이터에 액세스하려면 이름 또는 숫자형 인덱스를 사용하여 행 및 변수에 들어 있는 요소를 참조하십시오.

테이블의 요소를 참조하는 일반적인 이유는 다음과 같습니다.

  • 행과 변수 재정렬 또는 제거

  • 배열을 새 행 또는 새 변수로 추가

  • 함수에 대한 입력 인수로 사용할, 데이터로 구성된 배열 추출

테이블 인덱싱 구문 요약

사용하는 인덱싱 유형에 따라 테이블에서 추출된 하위 테이블 또는 배열에 액세스할 수 있습니다. 인덱싱에 사용하는 방법은 다음과 같습니다.

  • 괄호 ()는 선택한 행과 변수가 있는 테이블을 반환합니다.

  • 점 표기법은 변수의 내용을 배열로 반환합니다.

  • 중괄호 {}는 선택한 행과 변수의 내용을 결합한 배열을 반환합니다.

이름, 숫자형 인덱스 또는 데이터형으로 행과 변수를 지정할 수 있습니다.

  • R2019b부터 변수 이름과 행 이름에 공백, 비 ASCII 문자 등 모든 문자를 사용할 수 있습니다. 또한 영문자뿐만 아니라 어떤 문자로도 시작할 수 있습니다. 변수 이름과 행 이름은 유효한 MATLAB® 식별자(유효 여부는 isvarname 함수의 판정에 따름)가 아니어도 됩니다.

  • R2022a부터 이름으로 행 및 변수를 지정할 경우 pattern 객체를 사용하여 이름을 지정할 수 있습니다. 예를 들어, "Var" + digitsPattern은 Var로 시작하고 임의 개수의 숫자로 끝나는 모든 이름과 일치합니다.

출력값 유형

구문

변수

예제

지정된 행과 변수를 포함하는 테이블

T(rows,vars)

지정 방법:

  • 행 번호(1 ~ m)

  • 이름(T에 행 이름이 있는 경우)

  • 시간(T가 timetable형인 경우)

  • 콜론(:)(모든 행을 의미함)

지정 방법:

  • 변수 번호(1~n)

  • 이름

  • 콜론(:)(모든 변수를 의미함)

  • T(1:5,[1 4 5])

    T의 처음 5개 행과 첫 번째, 네 번째, 다섯 번째 변수를 포함하는 테이블

  • T(:,["A","B"])

    이름이 A 및 B인 모든 행과 변수를 포함하는 테이블

  • T(:,"A" + wildcardPattern)

    이름이 A로 시작하는 모든 행과 변수를 포함하는 테이블

지정된 데이터형의 변수를 포함하는 테이블

S = vartype(type);

T(rows,S)

지정 방법:

  • 행 번호(1 ~ m)

  • 이름(T에 행 이름이 있는 경우)

  • 시간(T가 timetable형인 경우)

  • 콜론(:)(모든 행을 의미함)

"numeric"형, "categorical"형 또는 "datetime"형 같은 데이터형으로 지정

  • S = vartype("numeric");

    T(1:5,S)

    T의 처음 5개 행과 숫자형 변수를 포함하는 테이블

하나의 변수에서 데이터를 추출하는 배열

T.var

T.(expression)

지정 안 함

지정 방법:

  • 변수 이름(따옴표 없음)

  • 변수 이름 또는 숫자를 반환하는 표현식(괄호로 묶음)

  • T.Date

    테이블 변수 Date에서 추출된 배열

  • T.("2019/06/30")

    테이블 변수 2019/06/30에서 추출된 배열

  • T.(1)

    첫 번째 테이블 변수에서 추출된 배열

하나의 변수와 지정된 행에서 데이터를 추출하는 배열

T.var(rows)

T.(expression)(rows)

배열의 숫자형 인덱스 또는 논리형 인덱스로 지정

지정 방법:

  • 변수 이름(따옴표 없음)

  • 변수 이름 또는 숫자를 반환하는 표현식(괄호로 묶음)

  • T.Date(1:5)

    테이블 변수 Date에서 배열의 처음 5개 행이 추출됨

  • T.("2019/06/30")(1:5)

    테이블 변수 2019/06/30에서 배열의 처음 5개 행이 추출됨

  • T.(1)(1:5)

    첫 번째 테이블 변수에서 배열의 처음 5개 행이 추출됨

지정된 행과 변수의 데이터를 결합하는 배열

T{rows,vars}

지정 방법:

  • 행 번호(1 ~ m)

  • 이름(T에 행 이름이 있는 경우)

  • 시간(T가 timetable형인 경우)

  • 콜론(:)(모든 행을 의미함)

지정 방법:

  • 변수 번호(1~n)

  • 이름

  • 콜론(:)(모든 변수를 의미함)

  • T{1:5,[1 4 5]}

    T의 처음 5개 행과 첫 번째, 네 번째, 다섯 번째 변수를 결합한 배열

  • T{:,["A","B"]}

    이름이 A 및 B인 모든 행과 변수를 결합한 배열

  • T{:,"A" + wildcardPattern}

    이름이 A로 시작하는 모든 행과 변수를 결합한 배열

지정된 행과 지정된 데이터형을 갖는 변수의 데이터를 결합한 배열

S = vartype(type);

T{rows,S}

지정 방법:

  • 행 번호(1 ~ m)

  • 이름(T에 행 이름이 있는 경우)

  • 시간(T가 timetable형인 경우)

  • 콜론(:)(모든 행을 의미함)

"numeric"형, "categorical"형 또는 "datetime"형 같은 데이터형으로 지정

  • S = vartype("numeric");

    T{1:5,S}

    T의 처음 5개 행과 숫자형 변수를 결합한 배열

모든 행과 변수의 데이터를 결합하는 배열

T.Variables

지정 안 함

지정 안 함

  • T.Variables

    T{:,:}에 의해 반환되는 배열과 동일함

지정된 행과 변수를 사용한 테이블 인덱싱

patients MAT 파일에서 100명의 환자에 대한 표본 데이터를 작업 공간 변수로 불러옵니다.

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=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

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' See Access Data in a Table.

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 = 100x1 logical array 1 0 1 0 0 0 1 0 1 1 ⋮

나이가 40세 미만인 환자의 키를 추출하려면 rows를 사용하여 Height 변수의 요소를 참조하십시오. 40세 미만인 환자는 56명입니다.

ans = 56×1 71 64 64 68 66 71 72 65 69 69 ⋮

논리형 인덱스를 사용하여 테이블의 요소를 참조할 수 있습니다. 40세 미만인 환자에 대한 T의 행을 표시해 보겠습니다.

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을 사용하여 위치를 지정합니다.

ans = 100×1 38 43 38 40 49 46 33 40 28 31 ⋮

이름으로 변수를 지정하려면 점 다음에 이름을 지정하거나 이름을 따옴표와 괄호로 묶으십시오. 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 28-May-2022 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 = 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

관련 항목

  • 테이블 사용의 이점
  • 테이블을 생성하고 테이블에 데이터 할당하기
  • 단위, 설명, 테이블 변수 이름 수정하기
  • 테이블의 데이터 계산
  • Data Cleaning and Calculations in Tables
  • Grouped Calculations in Tables and Timetables
  • 조건을 충족하는 배열 요소 찾기

Toplist

최신 우편물

태그