cell2table - Convert cell array to table - MATLAB (original) (raw)

Convert cell array to table

Syntax

Description

[T](#btx311n-1%5Fsep%5Fshared-T) = cell2table([C](#btx311n-1-C)) converts the contents of an m-by-n cell array to anm-by-n table. Each column of the input cell array provides the data contained in a variable of the output table.

To create variable names in the output table, cell2table appends column numbers to the input array name. If the input array has no name, thencell2table creates variable names of the form"Var1",...,"Var_`N`_", where_`N`_ is the number of columns in the cell array.

[T](#btx311n-1%5Fsep%5Fshared-T) = cell2table([C](#btx311n-1-C),[Name,Value](#namevaluepairarguments)) creates a table from a cell array with additional options specified by one or moreName,Value pair arguments.

For example, you can specify row names or variable names to include in the table.

example

Examples

collapse all

Create a cell array that contains strings and numeric data. (Cell arrays of strings are not recommended. But in this case, it is appropriate to include strings in a cell array that contains both strings and numbers. This cell array is not a container for text, but for values that are grouped together though they have different data types.)

C = {5 "cereal" 110 "C+"; 12 "pizza" 140 "B";... 23 "salmon" 367 "A"; 2 "cookies" 160 "D"}

C=4×4 cell array {[ 5]} {["cereal" ]} {[110]} {["C+"]} {[12]} {["pizza" ]} {[140]} {["B" ]} {[23]} {["salmon" ]} {[367]} {["A" ]} {[ 2]} {["cookies"]} {[160]} {["D" ]}

Convert the cell array, C, to a table and specify variable names.

T = cell2table(C,... "VariableNames",["Age" "FavoriteFood" "Calories" "NutritionGrade"])

T=4×4 table Age FavoriteFood Calories NutritionGrade ___ ____________ ________ ______________

 5      "cereal"         110            "C+"     
12      "pizza"          140            "B"      
23      "salmon"         367            "A"      
 2      "cookies"        160            "D"      

The variables T.Age and T.Calories are numeric while the variables T.FavoriteFood and T.NutritionGrade are string arrays.

Convert a cell array to a table, and then include the first row from the cell array as variable names for the table.

Create a cell array where the first row contains strings to identify column headings. (Cell arrays of strings are not recommended. But in this case, it is appropriate to include strings in a cell array that contains strings, numbers, and logical values. This cell array is not a container for text, but for values that are grouped together though they have different data types.)

Patients = {"LastName" "Age" "Height" "Weight" "Smoker";... "Chang" 38 71 176 true;... "Brown" 43 69 163 false;... "Ruiz" 38 64 131 false;... "Lee" 38 64 131 false;... "Smith" 40 67 133 false;... "Garcia" 49 64 119 false}

Patients=7×5 cell array {["LastName"]} {["Age"]} {["Height"]} {["Weight"]} {["Smoker"]} {["Chang" ]} {[ 38]} {[ 71]} {[ 176]} {[ 1]} {["Brown" ]} {[ 43]} {[ 69]} {[ 163]} {[ 0]} {["Ruiz" ]} {[ 38]} {[ 64]} {[ 131]} {[ 0]} {["Lee" ]} {[ 38]} {[ 64]} {[ 131]} {[ 0]} {["Smith" ]} {[ 40]} {[ 67]} {[ 133]} {[ 0]} {["Garcia" ]} {[ 49]} {[ 64]} {[ 119]} {[ 0]}

Exclude the columns headings and convert the contents of the cell array to a table.

C = Patients(2:end,:); T = cell2table(C)

T=6×5 table C1 C2 C3 C4 C5
________ __ __ ___ _____

"Chang"     38    71    176    true 
"Brown"     43    69    163    false
"Ruiz"      38    64    131    false
"Lee"       38    64    131    false
"Smith"     40    67    133    false
"Garcia"    49    64    119    false

The table, T, has variable names C1,...,C5.

Change the variable names by setting the table property, T.Properties.VariableNames, to include the names from the first row of the cell array. To extract the names from the first row, use curly braces. Then concatenate the names into a string array. Assign the string array to T.Properties.VariableNames.

LastName = [Patients{1,:}]

LastName = 1×5 string "LastName" "Age" "Height" "Weight" "Smoker"

T.Properties.VariableNames = LastName

T=6×5 table LastName Age Height Weight Smoker ________ ___ ______ ______ ______

"Chang"     38       71       176      true  
"Brown"     43       69       163      false 
"Ruiz"      38       64       131      false 
"Lee"       38       64       131      false 
"Smith"     40       67       133      false 
"Garcia"    49       64       119      false 

Input Arguments

collapse all

Input cell array, specified as a 2-D cell array. Each column of C provides data for a table variable.

If the contents of the cells in a column of C have:

Name-Value Arguments

collapse all

Specify optional pairs of arguments asName1=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 a cell array of character vectors or string array, whose elements are nonempty and distinct. The number of row names must equal the number of rows of the input array.

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

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

Variable names, specified as a cell array of character vectors or a string array, whose elements are nonempty and distinct. The number of variable names must equal the number of columns of the input array.

Variable names can have any Unicode characters, including spaces and non-ASCII characters. However, a variable name cannot match any table dimension name or the reserved names 'Properties', 'RowNames', 'VariableNames', or ':'.

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. However, a dimension name cannot match any table variable name or the reserved names'Properties', 'RowNames','VariableNames', or ':'.

As an alternative, in all releases you can specify dimension names by setting theDimensionNames property of the table.

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.

Extended Capabilities

Version History

Introduced in R2013b

expand all

Table and timetable variable names with leading or trailing whitespace characters are not modified.

In previous releases, leading and trailing whitespace characters were deleted from variable names when you specified them using the 'VariableNames' name-value pair argument, or assigned them to the VariableNames property.

To manually remove such characters, first use the strtrim function on the names, then assign them as variable names to the table or timetable.