이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

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

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

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

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

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

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

테이블 인덱싱 구문 요약

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

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

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

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

이름, 숫자형 인덱스 또는 데이터형으로 행과 변수를 지정할 수 있습니다. R2019b부터 변수 이름과 행 이름에 공백, 비ASCII 문자 등 모든 문자를 사용할 수 있습니다. 또한 영문자뿐만 아니라 어떤 문자로도 시작할 수 있습니다. 즉, 변수 이름과 행 이름이 유효한 MATLAB® 식별자(isvarname 함수에 의해 결정됨)가 아니어도 됩니다.

출력값 유형

구문

변수

예제

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

T(rows,vars)

지정 방법:

  • 행 번호(1 ~ m)

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

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

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

지정 방법:

  • 변수 번호(1~n)

  • 이름

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

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

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

  • T(:,{'A','B'})

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

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

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'}}

    T의 모든 행과 변수 'A''B'를 결합한 배열

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

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명의 환자에 대한 표본 데이터를 작업 공간 변수로 불러옵니다.

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, WeightSmoker 작업 공간 변수로 채웁니다. LastName의 고유 식별자를 행 이름으로 사용합니다. T는 100x5 테이블입니다. (행 이름을 지정해도 테이블 변수로 간주되지 않습니다.)

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은 5x5 테이블입니다.

괄호 안에는 숫자형 인덱스 외에도 행 이름이나 변수 이름을 사용할 수 있습니다. (이 사례에서는 행 인덱스와 콜론을 사용하는 편이 행 이름이나 변수 이름을 사용하는 것보다 더 간단합니다.)

이름을 사용한 인덱싱

성이 '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는 2x5 테이블입니다.

이름으로 변수를 선택할 수도 있습니다. 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);

테이블에서의 위치로 변수를 지정하려면 숫자를 사용하십시오. AgeT의 첫 번째 변수이므로 숫자 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    31-Jan-2020 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개 행을 선택하고, 변수 이름을 사용하여 변수 HeightWeight를 선택합니다.

A = T{1:5,{'Height','Weight'}}
A = 5×2

    71   176
    69   163
    64   131
    67   133
    64   119

A는 테이블이 아니라 5x2 숫자형 배열입니다.

하나의 변수 이름을 지정하면 중괄호 인덱싱은 점 표기법을 사용하여 얻은 것과 동일한 배열을 생성합니다. 하지만 중괄호 인덱싱을 사용할 경우 행과 변수를 모두 지정해야 합니다. 예를 들어, 구문 T.HeightT{:,'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
      ⋮

참고 항목

| | |

관련 항목