Main Content

table2struct

Convert table to structure array

Description

S = table2struct(T) converts the table or timetable, T, to a structure array, S. Each variable in T becomes a field in S. If T is an m-by-n table or timetable, then S is a m-by-1 structure array with n fields.

The output S does not include the table properties in T.Properties.

  • If T is a table with row names, then S does not include the row names.

  • If T is a timetable, then S does not include the row times.

example

S = table2struct(T,"ToScalar",true) converts the table, T, to a scalar structure S. Each variable of T becomes a field in S. If T is a m-by-n table, then S has n fields, each of which has m rows.

example

Examples

collapse all

Create a table, T, with five rows and three variables.

T = table(categorical(["Y";"N";"Y";"N";"N"]),[38;43;38;40;49],...
    [124 93;109 77; 125 83; 117 75; 122 80],...
    'VariableNames',["Smoker" "Age" "BloodPressure"])
T=5×3 table
    Smoker    Age    BloodPressure
    ______    ___    _____________

      Y       38      124     93  
      N       43      109     77  
      Y       38      125     83  
      N       40      117     75  
      N       49      122     80  

Convert T to a structure array.

S = table2struct(T)
S=5×1 struct array with fields:
    Smoker
    Age
    BloodPressure

The structure is 5-by-1, corresponding to the five rows of the table, T. The three fields of S correspond to the three variables from T.

Display the field data for the first element of S.

S(1)
ans = struct with fields:
           Smoker: Y
              Age: 38
    BloodPressure: [124 93]

The information corresponds to the first row of the table.

Create a table, T, with five rows and three variables.

T = table(categorical(["Y";"N";"Y";"N";"N"]),[38;43;38;40;49],...
    [124 93;109 77; 125 83; 117 75; 122 80],...
    'VariableNames',["Smoker" "Age" "BloodPressure"])
T=5×3 table
    Smoker    Age    BloodPressure
    ______    ___    _____________

      Y       38      124     93  
      N       43      109     77  
      Y       38      125     83  
      N       40      117     75  
      N       49      122     80  

Convert T to a scalar structure.

S = table2struct(T,"ToScalar",true)
S = struct with fields:
           Smoker: [5x1 categorical]
              Age: [5x1 double]
    BloodPressure: [5x2 double]

The data in the fields of the scalar structure are 5-by-1, corresponding to the five rows in the table T.

Display the data for the field BloodPressure.

S.BloodPressure
ans = 5×2

   124    93
   109    77
   125    83
   117    75
   122    80

The structure field BloodPressure contains all of the data that was in the variable of the same name from table T.

Create a table, T, that includes row names.

T = table(categorical(["Y";"N";"Y";"N";"N"]),[38;43;38;40;49],...
    [124 93;109 77; 125 83; 117 75; 122 80],...
    'VariableNames',["Smoker" "Age" "BloodPressure"],...
    'RowNames',["Chang" "Brown" "Ruiz" "Lee" "Smith"])
T=5×3 table
             Smoker    Age    BloodPressure
             ______    ___    _____________

    Chang      Y       38      124     93  
    Brown      N       43      109     77  
    Ruiz       Y       38      125     83  
    Lee        N       40      117     75  
    Smith      N       49      122     80  

Convert T to a scalar structure.

S = table2struct(T,"ToScalar",true)
S = struct with fields:
           Smoker: [5x1 categorical]
              Age: [5x1 double]
    BloodPressure: [5x2 double]

Add a field for the row names from the table.

S.RowNames = T.Properties.RowNames
S = struct with fields:
           Smoker: [5x1 categorical]
              Age: [5x1 double]
    BloodPressure: [5x2 double]
         RowNames: {5x1 cell}

If S is a nonscalar structure, use [S.RowNames] = T.Properties.RowNames{:} to include a field with the row names from the table.

Input Arguments

collapse all

Input table, specified as a table or timetable.

If T has variables whose names are not valid MATLAB® identifiers, then table2struct modifies them to create valid field names, primarily by removing spaces and replacing non-ASCII characters with underscores.

Extended Capabilities

Thread-Based Environment
Run code in the background using MATLAB® backgroundPool or accelerate code with Parallel Computing Toolbox™ ThreadPool.

Version History

Introduced in R2013b