Clear Filters
Clear Filters

Adding a Column to a Table

1 606 views (last 30 days)
John
John on 6 Oct 2023
Commented: Walter Roberson ungefär 3 timmar ago
Hello everyone, I've just started out with Matlab for uni and am trying to add a column to a table. I ran into the following error message
Error using .
To assign to or create a variable in a table, the number of rows must match the height of the table.
My code is written below:
%Creates a table called 'tab' using the data in the coronavirus-cases.csv
%file.
tab = readtable("coronavirus-cases.csv");
%Creates a row of zeros with the same height as tab.
newTabCol = zeros(height(tab), 1);
%Adds the column and titles it "Seven Day Average".
tab.newTabCol = "Seven Day Average";
What confuses me is that the height of newTabCol matches tab. Both have 153772 rows:
I'm sure I'm missing something basic but any help would be appreciated.
Kind regards,
John

Accepted Answer

Dyuman Joshi
Dyuman Joshi on 6 Oct 2023
The variable name/title should be used after using the dot notation inside parenthesis and the data to append should be on the right side of the equation.
%Creates a row of zeros with the same height as tab.
newTabCol = zeros(height(tab), 1);
%Adds the column and titles it "Seven Day Average".
tab.("Seven Day Average") = newTabCol;
  2 Comments
John
John on 6 Oct 2023
Thanks so much Dyuman!
Dyuman Joshi
Dyuman Joshi on 6 Oct 2023
You are welcome!
Also, do check out Image Analst's suggestion as well.

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 6 Oct 2023
To add a column to a table, use addvars
help addvars
--- help for table/addvars --- ADDVARS Add variables to table or timetable. T2 = ADDVARS(T1, VAR1, ..., VARN) appends the arrays VAR1,...,VARN as variables to the table T1. VAR1,...,VARN can include arrays of any type, including tables and timetables. All input arguments must have the same number of rows. T2 = ADDVARS(..., 'Before', LOCATION) T2 = ADDVARS(..., 'After', LOCATION) inserts the variables either before or after the position specified by LOCATION. LOCATION is a positive integer, a variable name, or a logical vector containing a single true value. ADDVARS(..., 'After', width(T1)) is equivalent to the default behavior. T2 = ADDVARS(..., 'NewVariableNames', NEWNAMES) specifies the names of the variables added in T2. NEWNAMES is a string array or cell array containing the same number of names as the number of added variables. Examples: % Load a table load fatalities.mat % Add per-capita deaths to table fatalities = addvars(fatalities, ... fatalities.deaths./fatalities.drivers, ... 'NewVariableNames', 'deathsPerThousand', ... 'After', 'drivers'); See also REMOVEVARS, MOVEVARS, SPLITVARS, MERGEVARS. Help for table/addvars is inherited from superclass tabular Documentation for table/addvars doc table/addvars Other uses of addvars codistributed/addvars gpuArray/addvars tall/addvars distributed/addvars tabular/addvars
  2 Comments
Alessandro Livi
Alessandro Livi ungefär 7 timmar ago
Edited: Walter Roberson ungefär 4 timmar ago
I read all that, tried it and it didn't work (or I hadn't rotated the vector yet with ' )
What did work is
A = zeros([1 size(app.StimInputTable.Data,1)]);
app.StimInputTable.Data.Var4 = A';
I suppose that
A = zeros([1 size(app.StimInputTable.Data,1)]);
app.StimInputTable.Data = ADDVARS(app.StimInputTable.Data, A');
might also work if I get all the app.'s and .Data's and A' in the right place but noone explains about rotating the vector to a column in the Help or in answers copied from Help.
Walter Roberson
Walter Roberson ungefär 3 timmar ago
T = array2table([10 9 8])
T = 1x3 table
Var1 Var2 Var3 ____ ____ ____ 10 9 8
T.GHI = [1 2 3 4]
T = 1x4 table
Var1 Var2 Var3 GHI ____ ____ ____ ________________ 10 9 8 1 2 3 4
The key here is that the variable to be added might legitimately have multiple columns, so the process of adding a variable cannot automatically flip vectors -- it might be the wrong thing to do.

Sign in to comment.

Products


Release

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!