MATLAB Answers

Add new variable to table based on condition

26 views (last 30 days)
Blue
Blue on 26 Jun 2019
Commented: Adam Danz on 27 Jun 2019
Hi,
I apologize for the newbie question but how does one add a variable to a table in Matlab based on conditions applied to other variables ?
For example, in the code below if t.y < 4 & t.y > 2 then 'A' should be stored in a new collumn t.z. Which doesnt work. Any ideas ?
y = [1 2 3 4];
x = [5 6 7 8];
t = table(x', y', 'VariableNames', {'x', 'y'})
if t.y < 4 & t.y > 2
t.z = 'A'
end

  5 Comments

Show 2 older comments
Walter Roberson
Walter Roberson on 26 Jun 2019
More likely,
mask = t.y > 2 & t.y < 4;
t.z(mask) = 'A';
Bob Nbob
Bob Nbob on 27 Jun 2019
Would using a logic index range for an undefined variable work though? I would think that if t.z didn't exist already then you would still run into the same issue Blue has. I get that the range covers a set of elements the same size as the other variables, but what values are entered for mask == 0? Do they just get created as empty? Is that allowed in a table?
Adam Danz
Adam Danz on 27 Jun 2019
Yes, mask=0 elements are merely empty strings ('')
y = [1 2 3 4];
x = [5 6 7 8];
t = table(x', y', 'VariableNames', {'x', 'y'})
mask = t.y > 2 & t.y < 4;
t.z(mask) = 'A';
t =
4×3 table
x y z
_ _ _
5 1
6 2
7 3 A
8 4

Sign in to comment.

Answers (0)

Tags