MATLAB Answers

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

20 views (last 30 days)
nskel on 6 Jun 2019
Commented: nskel on 6 Jun 2019
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!
##### 1 CommentShowHide None
nskel 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!

Sign in to comment.

### Accepted Answer

Alex Mcaulley on 6 Jun 2019
One option is:
x(:,3) = deal({0});
x(ismember(x(:,2),'A'),3) = deal({1});
##### 1 CommentShowHide None
Jan on 6 Jun 2019
Cheaper without deal():
x(:,3) = {0};
x(strcmp(x(:,2),'A'), 3) = {1};

Sign in to comment.

### More Answers (1)

Jan on 6 Jun 2019
Edited: Jan 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'))
##### 0 CommentsShowHide -1 older comments

Sign in to comment.

### Community Treasure Hunt

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

Start Hunting!