Convert structure array to table
T = struct2table(S)
T = struct2table(S,Name,Value)
creates
a table from a structure array, T
= struct2table(S
,Name,Value
)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.
Convert a scalar structure to a table using the default options.
Create a structure array, S
.
S.Name = {'CLARK';'BROWN';'MARTIN'}; S.Gender = {'M';'F';'M'}; S.SystolicBP = [124;122;130]; S.DiastolicBP = [93;80;92]; S
S = struct with fields:
Name: {3x1 cell}
Gender: {3x1 cell}
SystolicBP: [3x1 double]
DiastolicBP: [3x1 double]
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 Gender SystolicBP DiastolicBP
________ ______ __________ ___________
'CLARK' 'M' 124 93
'BROWN' 'F' 122 80
'MARTIN' 'M' 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
Gender SystolicBP DiastolicBP
______ __________ ___________
CLARK 'M' 124 93
BROWN 'F' 122 80
MARTIN 'M' 130 92
Create a nonscalar structure array, S
.
S(1,1).Name = 'CLARK'; S(1,1).Gender = 'M'; S(1,1).SystolicBP = 124; S(1,1).DiastolicBP = 93; S(2,1).Name = 'BROWN'; S(2,1).Gender = 'F'; S(2,1).SystolicBP = 122; S(2,1).DiastolicBP = 80; S(3,1).Name = 'MARTIN'; S(3,1).Gender = 'M'; S(3,1).SystolicBP = 130; S(3,1).DiastolicBP = 92; S
S = 3x1 struct array with fields:
Name
Gender
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 Gender SystolicBP DiastolicBP
________ ______ __________ ___________
'CLARK' 'M' 124 93
'BROWN' 'F' 122 80
'MARTIN' 'M' 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
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.
S
— Structure arrayStructure 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.
Specify optional
comma-separated pairs of Name,Value
arguments. Name
is
the argument name and Value
is the corresponding value.
Name
must appear inside single quotes (' '
). You can
specify several name and value pair arguments in any order as
Name1,Value1,...,NameN,ValueN
.
RowNames',{'row1','row2','row3'}
uses
the row names, row1
, row2
, and row3
for
the table, T
.'RowNames'
— Row names for T
{}
(default) | cell array of character vectorsRow names for T
, specified as the comma-separated
pair consisting of 'RowNames'
and a cell array
of character vectors that are nonempty and distinct.
'AsArray'
— Indicator for how to treat scalar structurefalse
(default) | true
| 0
| 1
Indicator for how to treat scalar structure, specified as the
comma-separated pair consisting of 'AsArray'
and
either false
, true
, 0
,
or 1
.
|
|
|
|
T
— Output tableOutput 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
.