# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the 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(fullfile(matlabroot,'examples','matlab','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` 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: 10×1 cell array of character vectors Test1: 10×1 double Values: Min 75 Median 86.5 Max 96 Test2: 10×1 double Values: Min 75 Median 85 Max 94 Test3: 10×1 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 = 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 ```

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 = 2×3 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 = 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 ```

### Change Variable Name

Change the variable name from `TestAvg` to `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 ```