how to label strings in an array with an ID

4 views (last 30 days)
I have a array
StringID=['a',1;
'b',2;
'c',3]
and a table with a column with a bunch of strings that exactly match the strings in StringID.
tc=['c';
'b';
'c';
'a';
'c']
How can I make a column vector that identifies the strings with the number in StringID?
ans=[3;
2;
3;
1;
3]
I would like this to be scaleable to a few thousand rows and a StringID column of a couple hundred strings. I feel like there is a simple solution I'm not thinking of. I assume there is some combo of find and strcmp that I'm not thinking of. I could probably just do it with a loop, but I am trying to avoid that.

Accepted Answer

Adam Danz
Adam Danz on 3 Aug 2020
Edited: Adam Danz on 3 Aug 2020
StringID needs to be a cell array. Then,
[~, idx] = ismember(tc,StringID(:,1));
Also see lower() if you want to control for cases.

More Answers (1)

madhan ravi
madhan ravi on 3 Aug 2020
T = cell2table(StringID(:, 2));
T.Properties.RowNames = StringID(:, 1);
Wanted = T{num2cell(tc), :}

Categories

Find more on Characters and Strings in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!