struct2table

Convert structure array to table

Syntax

``T = struct2table(S)``
``T = struct2table(S,Name,Value)``

Description

example

````T = struct2table(S)` converts the structure array, `S`, to a table, `T`. Each field of `S` becomes a variable in `T`.```

example

````T = struct2table(S,Name,Value)` creates a table from a structure array, `S`, with additional options specified by one or more `Name,Value` pair arguments.For example, you can specify row names to include in the table.```

Examples

collapse all

Convert a scalar structure to a table using the default options.

Create a structure array, `S`.

```S.Name = ["Chang";"Brown";"Ruiz"]; S.Smoker = ["Y";"N";"Y"]; S.SystolicBP = [124;122;130]; S.DiastolicBP = [93;80;92];```

The scalar structure, `S`, has four fields, each with three rows.

Convert the structure array to a table.

`T = struct2table(S)`
```T=3×4 table Name Smoker SystolicBP DiastolicBP _______ ______ __________ ___________ "Chang" "Y" 124 93 "Brown" "N" 122 80 "Ruiz" "Y" 130 92 ```

The structure field names in `S` become the variable names in the output table. The size of `T` is 3-by-4.

Change `Name` from a variable to row names by modifying the table property, `T.Properties.RowNames`, and then deleting the variable `Name`.

```T.Properties.RowNames = T.Name; T.Name = []; T```
```T=3×3 table Smoker SystolicBP DiastolicBP ______ __________ ___________ Chang "Y" 124 93 Brown "N" 122 80 Ruiz "Y" 130 92 ```

Create a nonscalar structure array, `S`.

```S(1,1).Name = "Chang"; S(1,1).Smoker = "Y"; S(1,1).SystolicBP = 124; S(1,1).DiastolicBP = 93; S(2,1).Name = "Brown"; S(2,1).Smoker = "N"; S(2,1).SystolicBP = 122; S(2,1).DiastolicBP = 80; S(3,1).Name = "Ruiz"; S(3,1).Smoker = "Y"; S(3,1).SystolicBP = 130; S(3,1).DiastolicBP = 92; S```
```S=3×1 struct array with fields: Name Smoker SystolicBP DiastolicBP ```

`S` is a 3-by-1 structure array with four fields.

Convert the structure array to a table.

`T = struct2table(S)`
```T=3×4 table Name Smoker SystolicBP DiastolicBP _______ ______ __________ ___________ "Chang" "Y" 124 93 "Brown" "N" 122 80 "Ruiz" "Y" 130 92 ```

The structure field names in `S` become the variable names in the output table. The size of `T` is 3-by-4.

Use `"AsArray",true` to create a table from a scalar structure whose fields have different numbers of rows.

Create a scalar structure, `S`, with fields `name`, `billing`, and `test`.

```S.name = "John Doe"; S.billing = 127.00; S.test = [79, 75, 73; 180, 178, 177.5; 220, 210, 205]```
```S = struct with fields: name: "John Doe" billing: 127 test: [3x3 double] ```

The fields have different numbers of rows. Therefore, you cannot use `struct2table(S)`, which uses `"AsArray",false` by default.

Treat the scalar structure as an array and convert it to a table.

`T = struct2table(S,"AsArray",true)`
```T=1×3 table name billing test __________ _______ ____________ "John Doe" 127 {3x3 double} ```

`T` contains one row.

Input Arguments

collapse all

Structure array, specified as a scalar structure array.

• If `S` is a scalar structure with `n` fields, all of which have `m` rows, then `T` is an `m`-by-`n` table.

• If `S` is a nonscalar `m`-by-`1` structure array with `n` fields, then `T` is an `m`-by-`n` table.

Name-Value Arguments

Specify optional pairs of arguments as `Name1=Value1,...,NameN=ValueN`, where `Name` is the argument name and `Value` is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose `Name` in quotes.

Example: `"RowNames",["row1","row2","row3"]` uses the row names, `row1`, `row2`, and `row3` for the table, `T`.

Row names, specified as the comma-separated pair consisting of `"RowNames"` and a string array or a cell array of character vectors whose elements are nonempty and distinct.

Row names can have any Unicode® characters, including spaces and non-ASCII characters.

If you specify row names that have leading or trailing whitespace characters, then `struct2table` removes them from the row names.

Since R2021a

Dimension names, specified as a two-element cell array of character vectors or two-element string array whose elements are nonempty and distinct.

Dimension names can have any Unicode characters, including spaces and non-ASCII characters.

Before R2021a, you can specify dimension names only by setting the `DimensionNames` property of the output.

Indicator for how to treat scalar structure, specified as the comma-separated pair consisting of `"AsArray"` and either `false`, `true`, `0`, or `1`.

 `true` `struct2table` converts `S` to a table with one row and `n` variables. The variables can be different sizes. `false` `struct2table` converts a scalar structure array with `n` fields into an `m`-by-`n` table. Each field must have `m` rows. This is the default behavior

Output Arguments

collapse all

Output table, returned as a table. The table can store metadata such as descriptions, variable units, variable names, and row names. For more information, see the Properties section of `table`.

Version History

Introduced in R2013b