테이블 계산

이 예제에서는 테이블에 대해 계산을 수행하는 방법을 보여줍니다.

함수 rowfunvarfun은 각각 지정된 함수를 테이블에 적용하지만, 대부분의 다른 함수에는 입력 인수로 숫자형 배열 또는 동종 배열이 필요합니다. 점 인덱싱을 사용하여 개별 변수에서 데이터를 추출하거나 중괄호를 사용하여 하나 이상의 변수에서 데이터를 추출할 수 있습니다. 그런 다음, 이렇게 추출된 데이터로 구성된 배열을 다른 함수에 대한 입력값으로 사용할 수 있습니다.

샘플 데이터를 테이블로 읽어오기

readtable 함수를 사용하여 쉼표로 구분된 텍스트 파일 testScores.csv에서 테이블로 데이터를 읽어옵니다. testScores.csv에는 여러 학생의 테스트 점수가 들어 있습니다. 텍스트 파일의 첫 번째 행에 있는 학생 이름을 테이블의 행 이름으로 사용합니다.

T = readtable('testScores.csv','ReadRowNames',true)
T=10×4 table
                  Gender      Test1    Test2    Test3
                __________    _____    _____    _____

    HOWARD      {'male'  }     90       87       93  
    WARD        {'male'  }     87       85       83  
    TORRES      {'male'  }     86       85       88  
    PETERSON    {'female'}     75       80       72  
    GRAY        {'female'}     89       86       87  
    RAMIREZ     {'female'}     96       92       98  
    JAMES       {'male'  }     78       75       77  
    WATSON      {'female'}     91       94       92  
    BROOKS      {'female'}     86       83       85  
    KELLY       {'male'  }     79       76       82  

T는 10개 행과 4개 변수를 포함하는 테이블입니다.

테이블 요약

테이블을 요약하는 summary 함수를 사용하여 각 변수에 대한 데이터형, 설명, 단위 및 기타 기술 통계량을 확인합니다.

summary(T)
Variables:

    Gender: 10x1 cell array of character vectors

    Test1: 10x1 double

        Values:

            Min          75  
            Median     86.5  
            Max          96  

    Test2: 10x1 double

        Values:

            Min         75   
            Median      85   
            Max         94   

    Test3: 10x1 double

        Values:

            Min         72   
            Median      86   
            Max         98   

요약에는 각 테스트에 대한 최소 점수, 중앙값 및 최대 점수가 포함되어 있습니다.

각 행에서 평균 구하기

중괄호 {}를 사용하여 두 번째, 세 번째, 네 번째 변수에서 데이터를 추출한 후 각 행의 평균을 구하고 새 변수 TestAvg에 저장합니다.

T.TestAvg = mean(T{:,2:end},2)
T=10×5 table
                  Gender      Test1    Test2    Test3    TestAvg
                __________    _____    _____    _____    _______

    HOWARD      {'male'  }     90       87       93          90 
    WARD        {'male'  }     87       85       83          85 
    TORRES      {'male'  }     86       85       88      86.333 
    PETERSON    {'female'}     75       80       72      75.667 
    GRAY        {'female'}     89       86       87      87.333 
    RAMIREZ     {'female'}     96       92       98      95.333 
    JAMES       {'male'  }     78       75       77      76.667 
    WATSON      {'female'}     91       94       92      92.333 
    BROOKS      {'female'}     86       83       85      84.667 
    KELLY       {'male'  }     79       76       82          79 

또는 변수 이름(T{:,{'Test1','Test2','Test3'}})이나 변수 인덱스(T{:,2:4})를 사용하여 데이터 서브셋을 선택할 수 있습니다.

그룹화 변수를 사용하여 통계량 계산하기

학생의 성별에 따라 TestAvg의 평균과 최댓값을 계산합니다.

varfun(@mean,T,'InputVariables','TestAvg',...
       'GroupingVariables','Gender')
ans=2×3 table
      Gender      GroupCount    mean_TestAvg
    __________    __________    ____________

    {'female'}        5            87.067   
    {'male'  }        5              83.4   

데이터 값 바꾸기

각 테스트의 최대 점수는 100입니다. 중괄호를 사용하여 테이블에서 데이터를 추출한 후 테스트 점수를 25점 스케일로 변환합니다.

T{:,2:end} = T{:,2:end}*25/100
T=10×5 table
                  Gender      Test1    Test2    Test3    TestAvg
                __________    _____    _____    _____    _______

    HOWARD      {'male'  }     22.5    21.75    23.25      22.5 
    WARD        {'male'  }    21.75    21.25    20.75     21.25 
    TORRES      {'male'  }     21.5    21.25       22    21.583 
    PETERSON    {'female'}    18.75       20       18    18.917 
    GRAY        {'female'}    22.25     21.5    21.75    21.833 
    RAMIREZ     {'female'}       24       23     24.5    23.833 
    JAMES       {'male'  }     19.5    18.75    19.25    19.167 
    WATSON      {'female'}    22.75     23.5       23    23.083 
    BROOKS      {'female'}     21.5    20.75    21.25    21.167 
    KELLY       {'male'  }    19.75       19     20.5     19.75 

변수 이름 변경하기

변수 이름을 TestAvg에서 Final로 변경합니다.

T.Properties.VariableNames{end} = 'Final'
T=10×5 table
                  Gender      Test1    Test2    Test3    Final 
                __________    _____    _____    _____    ______

    HOWARD      {'male'  }     22.5    21.75    23.25      22.5
    WARD        {'male'  }    21.75    21.25    20.75     21.25
    TORRES      {'male'  }     21.5    21.25       22    21.583
    PETERSON    {'female'}    18.75       20       18    18.917
    GRAY        {'female'}    22.25     21.5    21.75    21.833
    RAMIREZ     {'female'}       24       23     24.5    23.833
    JAMES       {'male'  }     19.5    18.75    19.25    19.167
    WATSON      {'female'}    22.75     23.5       23    23.083
    BROOKS      {'female'}     21.5    20.75    21.25    21.167
    KELLY       {'male'  }    19.75       19     20.5     19.75

참고 항목

| | | | |

관련 항목