## How do I add a column to a cell array based on existing values in another column?

### nskel (view profile)

on 6 Jun 2019
Latest activity Commented on by nskel

on 6 Jun 2019

### Alex Mcaulley (view profile)

Hi,
Only a beginner so forgive me for the basic question... but I have a cell array (x) of dimensions 1310x2. Column 1 is a unique identifier; there are two possible values of the second column, either "A" or "B". I want to add a third column which I want to be "1" if Column 2 is "A" and "0" otherwise.
What is the most efficient way to carry this out?
Should I be using an 'if' statement with a loop?
If so, should I be adding a third (blank) column before carrying out the if statement and populating this with 1's or 0's?
Thanks!

nskel

### nskel (view profile)

on 6 Jun 2019
Thanks for the answers guys! Really appreciate it... Just out of curiosity let's say instead of 'A' and 'B' Column 2 was made of 2 numerics, say 100 or 200- what is the equivalent to strcmp for numbers in this context or is there a better way to go about it?
Cheers!

### Alex Mcaulley (view profile)

on 6 Jun 2019

One option is:
x(:,3) = deal({0});
x(ismember(x(:,2),'A'),3) = deal({1});

Jan

### Jan (view profile)

on 6 Jun 2019
Cheaper without deal():
x(:,3) = {0};
x(strcmp(x(:,2),'A'), 3) = {1};

on 6 Jun 2019
Edited by Jan

### Jan (view profile)

on 6 Jun 2019

Only a beginner so forgive me for the basic question... but I have a cell array (x) of dimensions 1310x2. Column 1 is a unique identifier; there are two possible values of the second column, either "A" or "B". I want to add a third column which I want to be "1" if Column 2 is "A" and "0" otherwise.
x = {'id1', 'A'; ... % Test data
'id2', 'B'; ...
'id3', 'A'};
Value = {'1', '0'}; % Or do you mean {"1", "0"}, or {1, 0}?
x(:,3) = Value(2 - strcmp(x(:,2), 'A'));
If the logical values 0 and 1 are meant:
x(:, 3) = num2cell(strcmp(x(:, 2), 'A'))