MATLAB Answers

How do I assign a value to a particular column in a subsection of a table?

93 views (last 30 days)
Karen on 9 May 2017
Commented: Peter Perkins on 10 May 2017
Using the example testing data on, I would like to write something like
T(T.Gender=='female',:).Test2 = 100
I can do something similar with array data, but get an error with table data. Is there a simple way to make this work without having to create a dummy array of the appropriate length for my constant value?
T = readtable(fullfile(matlabroot,'examples','matlab','testScores.csv'),...
T.Gender = categorical(T.Gender)
% select a subset of the rows
rows = T.Gender=='female'
% this works, and is my usual way of working with array data
A = table2array(T(:,2:4))
A(rows,2) = 100
% This works, but is ugly
T(rows,:).Test2 = 100 * ones(size(T(rows,:).Test2))
% This does not work
T(rows,:).Test2 = 100
Error: 'To assign to or create a variable in a table, the number of rows must match the height of the table. '


Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 9 May 2017
T{rows,'Test2'} = 100;


Karen on 9 May 2017
Thanks. After posting the question, I finally found the right page of documentation...
Peter Perkins
Peter Perkins on 10 May 2017
For assigning to just one variable in a table, you might find
T.Test2(rows) = 100;
more readable.

Sign in to comment.

More Answers (0)



Community Treasure Hunt

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

Start Hunting!

Translated by