Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

Calculations on Tables

This example shows how to perform calculations on tables.

The functions rowfun and varfun each apply a specified function to a table, yet many other functions require numeric or homogeneous arrays as input arguments. You can extract data from individual variables using dot indexing or from one or more variables using curly braces. The extracted data is then an array that you can use as input to other functions.

Read Sample Data into Table

Read data from a comma-separated text file, testScores.csv, into a table using the readtable function. testScores.csv contains test scores for several students. Use the student names in the first column of the text file as row names in the table.

T = readtable('testScores.csv','ReadRowNames',true)
T=10x4 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 is a table with 10 rows and four variables.

Summarize the Table

View the data type, description, units, and other descriptive statistics for each variable by using the summary function to summarize the table.

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     

The summary contains the minimum, median, and maximum score for each test.

Find the Average Across Each Row

Extract the data from the second, third, and fourth variables using curly braces, {}, find the average of each row, and store it in a new variable, TestAvg.

T.TestAvg = mean(T{:,2:end},2)
T=10x5 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 

Alternatively, you can use the variable names, T{:,{'Test1','Test2','Test3'}} or the variable indices, T{:,2:4} to select the subset of data.

Compute Statistics Using Grouping Variable

Compute the mean and maximum of TestAvg by gender of the students.

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

    'female'    5             87.067      
    'male'      5               83.4      

Replace Data Values

The maximum score for each test is 100. Use curly braces to extract the data from the table and convert the test scores to a 25 point scale.

T{:,2:end} = T{:,2:end}*25/100
T=10x5 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 

Change Variable Name

Change the variable name from TestAvg to Final.

T.Properties.VariableNames{end} = 'Final'
T=10x5 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

See Also

| | | | |

Related Topics

Was this topic helpful?