Main Content

테이블 변수 추가, 삭제 및 재배열하기

이 예제에서는 테이블에서 열 방향 변수를 추가, 삭제 및 재배열하는 방법을 보여줍니다. addvars 함수, movevars 함수, removevars 함수를 사용하여 테이블 변수를 추가, 이동 및 삭제할 수 있습니다. 또는 점 구문을 사용하거나 테이블의 요소를 참조하여 테이블 변수를 수정할 수도 있습니다. 복수의 열을 갖는 변수를 분할하고 여러 변수를 하나로 결합하려면 splitvars 함수와 mergevars 함수를 사용합니다. 마지막으로 테이블의 행이 출력 테이블의 변수가 되도록 rows2vars 함수를 사용하여 테이블의 방향을 변경할 수 있습니다.

변수 편집기를 사용하여 테이블 변수를 변경할 수도 있습니다.

샘플 데이터 불러오기 및 테이블 생성하기

MAT 파일 patients에서 샘플 데이터로 구성된 배열을 불러옵니다. 작업 공간으로 불러온 변수의 이름과 크기를 표시해 보겠습니다.

load patients
whos -file patients
  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               

테이블을 2개 만듭니다. 환자 질문서에서 수집한 정보를 사용하여 하나의 테이블 T를 생성하고, 환자로부터 측정한 데이터를 사용하여 다른 테이블 T2를 생성합니다. 각 테이블에는 100개 행이 있습니다.

T = table(Age,SelfAssessedHealthStatus,Smoker);
T.SelfAssessedHealthStatus = string(T.SelfAssessedHealthStatus);
T2 = table(Height,Weight,Systolic,Diastolic);

각 테이블에서 처음 5개 행을 표시합니다.

head(T,5)
    Age    SelfAssessedHealthStatus    Smoker
    ___    ________________________    ______

    38           "Excellent"           true  
    43           "Fair"                false 
    38           "Good"                false 
    40           "Fair"                false 
    49           "Good"                false 
head(T2,5)
    Height    Weight    Systolic    Diastolic
    ______    ______    ________    _________

      71       176        124          93    
      69       163        109          77    
      64       131        125          83    
      67       133        117          75    
      64       119        122          80    

다른 테이블과 결합한 변수 추가하기

T2와 가로로 결합하여 테이블 T에 변수를 추가합니다.

T = [T T2];

T의 처음 5개 행을 표시합니다.

head(T,5)
    Age    SelfAssessedHealthStatus    Smoker    Height    Weight    Systolic    Diastolic
    ___    ________________________    ______    ______    ______    ________    _________

    38           "Excellent"           true        71       176        124          93    
    43           "Fair"                false       69       163        109          77    
    38           "Good"                false       64       131        125          83    
    40           "Fair"                false       67       133        117          75    
    49           "Good"                false       64       119        122          80    

이제 테이블 T에 7개 변수와 100개 행이 있습니다.

가로로 결합할 테이블에 행 이름이 있는 경우 horzcat은 행 이름을 일치시켜 테이블을 결합합니다. 따라서, 테이블은 동일한 행 이름을 사용해야 합니다. 그러나, 행 순서는 상관없습니다.

작업 공간의 변수를 테이블에 추가하기

작업 공간 변수 LastName의 환자 이름을 T의 첫 번째 테이블 변수 앞에 추가합니다. 새로운 위치 근처에 있는 변수의 이름을 사용하여 테이블에서 어느 위치든 지정할 수 있습니다. 따옴표를 사용하여 테이블 변수의 이름을 참조하십시오. 하지만 작업 공간 변수인 입력 인수에는 따옴표를 사용하지 마십시오.

T = addvars(T,LastName,'Before',"Age");
T.LastName = string(T.LastName);
head(T,5)
     LastName     Age    SelfAssessedHealthStatus    Smoker    Height    Weight    Systolic    Diastolic
    __________    ___    ________________________    ______    ______    ______    ________    _________

    "Smith"       38           "Excellent"           true        71       176        124          93    
    "Johnson"     43           "Fair"                false       69       163        109          77    
    "Williams"    38           "Good"                false       64       131        125          83    
    "Jones"       40           "Fair"                false       67       133        117          75    
    "Brown"       49           "Good"                false       64       119        122          80    

숫자를 사용하여 테이블에서 위치를 지정할 수도 있습니다. 예를 들어, 위의 예와 동일한 위치를 지정하는 숫자를 사용한 구문은 T = addvars(T,LastName,'Before',1)입니다.

점 구문을 사용하여 변수 추가하기

새로운 변수를 추가하는 또 다른 방법은 점 구문을 사용하는 것입니다. 점 구문을 사용하면 항상 새로운 변수를 테이블의 마지막 변수로 추가합니다. 변수에 테이블과 동일한 개수의 행이 있는 한, 어떠한 데이터형의 변수도 추가할 수 있습니다.

두 개의 변수 SystolicDiastolic을 가로 결합하여 혈압을 나타내는 새 변수를 생성합니다. 변수를 T에 추가합니다.

T.BloodPressure = [Systolic Diastolic];
head(T,5)
     LastName     Age    SelfAssessedHealthStatus    Smoker    Height    Weight    Systolic    Diastolic    BloodPressure
    __________    ___    ________________________    ______    ______    ______    ________    _________    _____________

    "Smith"       38           "Excellent"           true        71       176        124          93         124     93  
    "Johnson"     43           "Fair"                false       69       163        109          77         109     77  
    "Williams"    38           "Good"                false       64       131        125          83         125     83  
    "Jones"       40           "Fair"                false       67       133        117          75         117     75  
    "Brown"       49           "Good"                false       64       119        122          80         122     80  

이제 T에 9개 변수와 100개 행이 있습니다. 테이블 변수는 열을 여러 개 가질 수 있습니다. 따라서 BloodPressure에 2개의 열이 있어도 이것은 하나의 테이블 변수입니다.

테이블 T에 새 변수 BMI를 추가하여 각 환자의 BMI(체질량지수)를 포함합니다. BMI는 키와 체중을 나타내는 함수입니다. BMI를 계산할 때 T에 있는 Weight 변수와 Height 변수를 참조할 수 있습니다.

T.BMI = (T.Weight*0.453592)./(T.Height*0.0254).^2;

BMI 계산에 사용되는 연산자 ./.^은 각각 요소별 나눗셈과 지수(거듭제곱)를 나타냅니다.

테이블 T에서 처음 5개 행을 표시합니다.

head(T,5)
     LastName     Age    SelfAssessedHealthStatus    Smoker    Height    Weight    Systolic    Diastolic    BloodPressure     BMI  
    __________    ___    ________________________    ______    ______    ______    ________    _________    _____________    ______

    "Smith"       38           "Excellent"           true        71       176        124          93         124     93      24.547
    "Johnson"     43           "Fair"                false       69       163        109          77         109     77      24.071
    "Williams"    38           "Good"                false       64       131        125          83         125     83      22.486
    "Jones"       40           "Fair"                false       67       133        117          75         117     75      20.831
    "Brown"       49           "Good"                false       64       119        122          80         122     80      20.426

테이블에서 변수 이동하기

movevars 함수를 사용하여 테이블 변수 BMI가 변수 Weight 다음에 오도록 위치를 이동할 수 있습니다. 이름으로 테이블 변수를 지정할 때는 따옴표를 사용합니다.

T = movevars(T,"BMI",'After',"Weight");
head(T,5)
     LastName     Age    SelfAssessedHealthStatus    Smoker    Height    Weight     BMI      Systolic    Diastolic    BloodPressure
    __________    ___    ________________________    ______    ______    ______    ______    ________    _________    _____________

    "Smith"       38           "Excellent"           true        71       176      24.547      124          93         124     93  
    "Johnson"     43           "Fair"                false       69       163      24.071      109          77         109     77  
    "Williams"    38           "Good"                false       64       131      22.486      125          83         125     83  
    "Jones"       40           "Fair"                false       67       133      20.831      117          75         117     75  
    "Brown"       49           "Good"                false       64       119      20.426      122          80         122     80  

숫자를 사용하여 테이블에서 위치를 지정할 수도 있습니다. 예를 들어, 위의 예와 동일한 위치를 지정하는 숫자를 사용한 구문은 T = movevars(T,"BMI",'After',6)입니다. 대개는 이름으로 변수를 참조하는 것이 더 편리합니다.

인덱싱을 사용하여 테이블 변수 이동하기

또는 인덱싱을 사용하여 테이블 변수를 이동할 수도 있습니다. 행렬의 요소를 참조할 때와 동일한 구문을 사용하여 테이블의 요소를 참조할 수 있습니다.

BloodPressureBMI 다음에 오도록 위치를 이동합니다.

T = T(:,[1:7 10 8 9]);
head(T,5)
     LastName     Age    SelfAssessedHealthStatus    Smoker    Height    Weight     BMI      BloodPressure    Systolic    Diastolic
    __________    ___    ________________________    ______    ______    ______    ______    _____________    ________    _________

    "Smith"       38           "Excellent"           true        71       176      24.547     124     93        124          93    
    "Johnson"     43           "Fair"                false       69       163      24.071     109     77        109          77    
    "Williams"    38           "Good"                false       64       131      22.486     125     83        125          83    
    "Jones"       40           "Fair"                false       67       133      20.831     117     75        117          75    
    "Brown"       49           "Good"                false       64       119      20.426     122     80        122          80    

변수가 많은 테이블에서는 보통 movevars 함수를 사용하는 것이 더 편리합니다.

변수 삭제하기

테이블 변수를 삭제하려면 removevars 함수를 사용하십시오. Systolic 테이블 변수와 Diastolic 테이블 변수를 삭제해 보겠습니다.

T = removevars(T,["Systolic","Diastolic"]);
head(T,5)
     LastName     Age    SelfAssessedHealthStatus    Smoker    Height    Weight     BMI      BloodPressure
    __________    ___    ________________________    ______    ______    ______    ______    _____________

    "Smith"       38           "Excellent"           true        71       176      24.547     124     93  
    "Johnson"     43           "Fair"                false       69       163      24.071     109     77  
    "Williams"    38           "Good"                false       64       131      22.486     125     83  
    "Jones"       40           "Fair"                false       67       133      20.831     117     75  
    "Brown"       49           "Good"                false       64       119      20.426     122     80  

점 구문을 사용하여 변수 삭제하기

또는 점 구문과 빈 행렬 []을 사용하여 변수를 삭제할 수 있습니다. 테이블에서 Age 변수를 제거해 보겠습니다.

T.Age = [];
head(T,5)
     LastName     SelfAssessedHealthStatus    Smoker    Height    Weight     BMI      BloodPressure
    __________    ________________________    ______    ______    ______    ______    _____________

    "Smith"             "Excellent"           true        71       176      24.547     124     93  
    "Johnson"           "Fair"                false       69       163      24.071     109     77  
    "Williams"          "Good"                false       64       131      22.486     125     83  
    "Jones"             "Fair"                false       67       133      20.831     117     75  
    "Brown"             "Good"                false       64       119      20.426     122     80  

인덱싱을 사용하여 변수 삭제하기

인덱싱과 빈 행렬 []을 사용하여 변수를 삭제할 수도 있습니다. 테이블에서 SelfAssessedHealthStatus 변수를 제거해 보겠습니다.

T(:,"SelfAssessedHealthStatus") = [];
head(T,5)
     LastName     Smoker    Height    Weight     BMI      BloodPressure
    __________    ______    ______    ______    ______    _____________

    "Smith"       true        71       176      24.547     124     93  
    "Johnson"     false       69       163      24.071     109     77  
    "Williams"    false       64       131      22.486     125     83  
    "Jones"       false       67       133      20.831     117     75  
    "Brown"       false       64       119      20.426     122     80  

테이블 변수 분할 및 병합하기

복수의 열을 갖는 테이블 변수를 열이 1개인 변수로 분할하려면 splitvars 함수를 사용하십시오. 변수 BloodPressure를 2개의 변수로 분할해 보겠습니다.

T = splitvars(T,"BloodPressure",'NewVariableNames',["Systolic","Diastolic"]);
head(T,5)
     LastName     Smoker    Height    Weight     BMI      Systolic    Diastolic
    __________    ______    ______    ______    ______    ________    _________

    "Smith"       true        71       176      24.547      124          93    
    "Johnson"     false       69       163      24.071      109          77    
    "Williams"    false       64       131      22.486      125          83    
    "Jones"       false       67       133      20.831      117          75    
    "Brown"       false       64       119      20.426      122          80    

마찬가지로, mergevars 함수를 사용하여 서로 관련 있는 테이블 변수를 1개의 변수로 묶을 수 있습니다. SystolicDiastolic을 다시 1개의 변수로 결합한 후 이름을 BP로 지정해 보겠습니다.

T = mergevars(T,["Systolic","Diastolic"],'NewVariableName',"BP");
head(T,5)
     LastName     Smoker    Height    Weight     BMI          BP    
    __________    ______    ______    ______    ______    __________

    "Smith"       true        71       176      24.547    124     93
    "Johnson"     false       69       163      24.071    109     77
    "Williams"    false       64       131      22.486    125     83
    "Jones"       false       67       133      20.831    117     75
    "Brown"       false       64       119      20.426    122     80

변수가 될 수 있도록 행의 방향 변경하기

테이블 또는 타임테이블의 행이 출력 테이블의 변수가 되도록 rows2vars 함수를 사용하여 행의 방향을 변경할 수 있습니다. 하지만 테이블에 복수의 열을 갖는 변수가 있으면 이 변수를 분할해야만 rows2vars 함수를 호출할 수 있습니다.

T에 있는 행의 방향을 변경해 보겠습니다. T에 있는 환자 이름이 출력 테이블에서 테이블 변수 이름이 되도록 지정합니다. T3의 첫 번째 변수에는 T의 변수 이름이 포함됩니다. T3의 나머지 변수에는 각각 T의 해당 행에 있는 데이터가 포함됩니다.

T = splitvars(T,"BP",'NewVariableNames',["Systolic","Diastolic"]);
T3 = rows2vars(T,'VariableNamesSource',"LastName");
T3(:,1:5)
ans=6×5 table
    OriginalVariableNames    Smith     Johnson    Williams    Jones 
    _____________________    ______    _______    ________    ______

        {'Smoker'   }             1         0           0          0
        {'Height'   }            71        69          64         67
        {'Weight'   }           176       163         131        133
        {'BMI'      }        24.547    24.071      22.486     20.831
        {'Systolic' }           124       109         125        117
        {'Diastolic'}            93        77          83         75

T3에 점 구문을 사용하여 환자 데이터에 배열로 액세스할 수 있습니다. 하지만 입력 테이블의 행 값을 결합할 수 없으면 출력 테이블의 변수는 셀형 배열이 됩니다.

T3.Smith
ans = 6×1

    1.0000
   71.0000
  176.0000
   24.5467
  124.0000
   93.0000

참고 항목

| | | | | | |

관련 항목