Note: This page has been translated by MathWorks. Click here to see

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

A table is a container for storing column-oriented variables that have the same number of rows. Parentheses allow you to select a subset of the data in a table and preserve the table container. Curly braces and dot indexing allow you to extract data from a table.

If you use curly braces, the resulting array is the horizontal
concatenation of the specified table variables containing only the
specified rows. The data types of all the specified variables must
be compatible for concatenation. You can then perform calculations
using MATLAB^{®} functions.

Dot indexing extracts data from one table variable. The result is an array of the same data type as extracted variable. You can follow the dot indexing with parentheses to specify a subset of rows to extract from a variable.

`T.Variables`

horizontally concatenates all
table variables into an array. `T.Variables`

is equivalent
to `T{:,:}`

.

To subscript into a table and select variables of a specified
type, use the `vartype`

function.

Consider a table, `T`

.

Type of Indexing | Result | Syntax | Rows | Variables |
---|---|---|---|---|

Parentheses | table | `T(` | One or more rows, specified by | One or more variables, specified by |

Curly Braces | extracted data | `T{` | One or more rows, specified by | One or more variables, specified by |

Dot Indexing | extracted data |
| All rows | One variable, specified by |

Dot Indexing | extracted data |
)`rows` | One or more rows, specified by | One variable, specified by |

Variables Property | extracted data |
| All rows | All variables when they can be horizontally concatenated into an array |

Subscripting by Variable Type | table |
| One or more rows, specified by | One or more variables of the specified |

Subscripting by Variable Type | extracted data |
| One or more rows, specified by | One or more variables of the specified |

When indexing into a table with parentheses, curly braces, or
dot indexing, you can specify

as
a colon, numeric indices, or logical expressions. Furthermore, you
can index by name using a single row name or a cell array of row names.`rows`

A logical expression can contain curly braces or dot indexing
to extract data from which you can define the subset of rows. For
example, `rows = T.Var2>0`

returns a logical array
with logical `true`

(`1`

) for rows
where the value in the variable `Var2`

is greater
than zero.

When indexing into a table with parentheses or curly braces,
you can specify

as
a colon, numeric indices, logical expressions, a single variable name,
a cell array of variable names, or as the output of the `vars`

`vartype`

function..

When using dot indexing, you must specify a single variable
to access. For a single variable name, use `T.`

.
For a single variable index, specified as a positive integer, use `var`

`T.(`

.* varindex*)

This example shows how to create a table from a subset of a larger table.

**Load Sample Data**

Load the sample patients data and create a table. Use the unique identifiers in `LastName`

as row names.

load patients patients = table(Age,Gender,Height,Weight,Smoker,... 'RowNames',LastName);

The table, `patients`

, contains 100 rows and 5 variables.

View the data type, description, units, and other descriptive statistics for each variable by using `summary`

to summarize the table.

summary(patients)

Variables: Age: 100x1 double Values: Min 25 Median 39 Max 50 Gender: 100x1 cell array of character vectors Height: 100x1 double Values: Min 60 Median 67 Max 72 Weight: 100x1 double Values: Min 111 Median 142.5 Max 202 Smoker: 100x1 logical Values: True 34 False 66

**Index Using Numeric Indices**

Create a subtable containing the first five rows and all the variables from the table, `patients`

. Use numeric indexing within the parentheses to specify the desired rows and variables. This is similar to indexing with numeric arrays.

T1 = patients(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`

is a 5-by-5 table. In addition to numeric indices, you can use row or variable names inside the parentheses. In this case, using row indices and a colon is more compact than using row or variable names.

**Index Using Names**

Select all the data for the patients with the last names `'Adams'`

and `'Brown'`

. In this case, it is simpler to use the row names than to use the numeric index.

T2 = patients({'Adams','Brown'},:)

`T2=`*2×5 table*
Age Gender Height Weight Smoker
___ ________ ______ ______ ______
Adams 48 'Female' 66 137 false
Brown 49 'Female' 64 119 false

`T2`

is a 2-by-5 table.

**Index Using a Logical Expression**

Create a new table, `T3`

, containing the gender, height, and weight of the patients under the age of 30. Select only the rows where the value in the variable, `Age`

, is less than 30.

Use dot notation to extract data from a table variable and a logical expression to define the subset of rows based on that extracted data.

rows = patients.Age<30; vars = {'Gender','Height','Weight'};

`rows`

is a 100-by-1 logical array containing logical `true`

(`1`

) for rows where the value in the variable, `Age`

, is less than 30.

Use parentheses to return a table containing the desired subset of the data.

T3 = patients(rows,vars)

`T3=`*15×3 table*
Gender Height Weight
________ ______ ______
Moore 'Male' 68 183
Jackson 'Male' 71 174
Garcia 'Female' 69 131
Walker 'Female' 65 123
Hall 'Male' 70 189
Young 'Female' 63 114
Hill 'Female' 64 138
Rivera 'Female' 63 130
Cooper 'Female' 65 127
Cox 'Female' 66 111
Howard 'Female' 68 134
James 'Male' 66 186
Jenkins 'Male' 69 189
Perry 'Female' 64 120
Alexander 'Male' 69 171

`T3`

is a 15-by-3 table.

This example shows how to extract the contents of a table using curly braces or dot indexing.

**Load Sample Data**

Load the sample patients data and create a table. Use the unique identifiers in `LastName`

as row names.

load patients patients = table(Age,Gender,Height,Weight,Smoker,... 'RowNames',LastName);

The table, `patients`

, contains 100 rows and 5 variables.

**Extract Multiple Rows and Multiple Variables**

Extract data from multiple variables in the table, `patients`

by using curly braces. Since dot indexing extracts data from a single variable at a time, braces are more convenient when you want to extract more than one variable.

Extract the height and weight for the first five patients. Use numeric indices to select the subset of rows, `1:5`

, and variable names to select the subset of variables, `{Height,Weight}`

.

A = patients{1:5,{'Height','Weight'}}

`A = `*5×2*
71 176
69 163
64 131
67 133
64 119

`A`

is a 5-by-2 numeric array.

**Extract Data from One Variable**

Use dot indexing to easily extract the contents of a single variable. Plot a histogram of the numeric data in the variable, `Weight`

.

```
figure()
histogram(patients.Weight)
title(' Patient Weight')
```

`patients.Weight`

is a double-precision column vector with 100 rows. Alternatively, you can use curly braces, `patients{:,'Weight'}`

, to extract all the rows for the variable `Weight`

.

To specify a subset of rows for a single variable, you can follow the dot indexing with parentheses or curly braces. Extract the heights of the nonsmoker patients under the age of 30.

Use dot notation to extract data from table variables and a logical expression to define the subset of rows based on that extracted data.

rows = patients.Smoker==false & patients.Age<30;

Use dot notation to extract the desired rows from the variable, `Height`

.

patients.Height(rows)

`ans = `*11×1*
68
71
70
63
64
63
65
66
68
66
⋮

The output is a 11-by-1 numeric array. Alternatively, you can specify the single variable, `Height`

, within curly braces to extract the desired data, `patients{rows,'Height'}`

.

- Create and Work with Tables
- Modify Units, Descriptions, and Table Variable Names
- Calculations on Tables