replace number by string

4 views (last 30 days)
Mohammed Kamruzzaman
Mohammed Kamruzzaman on 9 Apr 2015
Answered: Jos (10584) on 10 Apr 2015
I have a vector with numeric values and I would like to replace the number in a given cell by a string (data are attached). For instance, 23=BDHE, 9997=BEIS, 11=CUAL, 4=CTGB, 60=MYMU, 1010=INJP, 3006=YNTA, and 80=TRQO. Thanks in Advance.

Accepted Answer

Mohammad Abouali
Mohammad Abouali on 10 Apr 2015
Well, a quick solution would be:
valueCell={ 23,23,23, ...
9997,9997,9997,9997,9997,9997,9997, ...
11,11,11,11,11,11,11, ...
4,4,4,4,4, ...
60,60,60,60,60,60, ...
1010,1010,1010,1010,1010,1010,1010,1010, ...
3006,3006,3006,3006,3006, ...
80,80,80,80,80};
strCell=cell(size(valueCell));
strCell( cellfun(@(c) c==23,valueCell) )={'BDHE'};
strCell( cellfun(@(c) c==9997,valueCell) )={'BEIS'};
strCell( cellfun(@(c) c==11,valueCell) )={'CUAL'};
strCell( cellfun(@(c) c==4,valueCell))={'CTGB'};
strCell( cellfun(@(c) c==60,valueCell) )={'MYMU'};
strCell( cellfun(@(c) c==1010,valueCell) )={'INJP'};
strCell( cellfun(@(c) c==3006,valueCell) )={'YNTA'};
strCell( cellfun(@(c) c==80,valueCell) )={'TRQO'};
But a better solution would be
valueCell={ 23,23,23, ...
9997,9997,9997,9997,9997,9997,9997, ...
11,11,11,11,11,11,11, ...
4,4,4,4,4, ...
60,60,60,60,60,60, ...
1010,1010,1010,1010,1010,1010,1010,1010, ...
3006,3006,3006,3006,3006, ...
80,80,80,80,80};
valueTable=cell2table(valueCell','VariableNames',{'value'});
conversionTable=table([ 23, 9997, 11, 4, 60, 1010, 3006, 80]', ...
{'BDHE','BEIS','CUAL','CTGB','MYMU','INJP','YNTA','TRQO'}', ...
'VariableNames',{'value','str'});
strTable=join(valueTable,conversionTable);
  1 Comment
Mohammed Kamruzzaman
Mohammed Kamruzzaman on 10 Apr 2015
Thank you so much. Your code is perfect.

Sign in to comment.

More Answers (1)

Jos (10584)
Jos (10584) on 10 Apr 2015
% conversion rules V(k) corresponds to S(k):
V = [ 3 4 6 9 1] ;
S = {'AA','B','CCC','D','EEE'} ;
ValuesIn = [3 6 4 6 3 1 9 9 0 4 4 1 3] % note the 0!
% engine to convert ValuesIn to StrOut
StrOut = repmat({'Unknown'},size(ValuesIn)) ;
[tf, idx] =ismember(ValuesIn, V) ;
StrOut(tf) = S(idx(tf))

Tags

Community Treasure Hunt

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

Start Hunting!