Find duplicated values in a row and rename
5 views (last 30 days)
Show older comments
I have a data array (100:500), and for the first vector(1,:) I would like to find the duplicated string values(the data in each cell is an string). For the result duplicated stings found I want to concatenate '_2'...'_n' depending on the duplicates found. I have try with the unique and histc functions but since is a vector of strings I could not achieve a good result.
I would really appreciate some help,
Thanks in advance
0 Comments
Accepted Answer
Curtis N
on 26 Jan 2015
I'm sure you no longer need this, but as I was looking for this type of solution today, here's how I did it using A K's suggestion.
orig = {'a', 'a', 'b', 'c', 'd', 'b', 'a', 'b', 'a', 'e'}';
new = orig;
uniqStr = unique(orig);
for ii = 1:length(uniqStr)
idx = strmatch(uniqStr{ii}, orig, 'exact');
for jj = 2:length(idx)
new{idx(jj)} = [orig{idx(jj)}, '_', num2str(jj)];
end
end
compare = [orig, new]
compare =
'a' 'a'
'a' 'a_2'
'b' 'b'
'c' 'c'
'd' 'd'
'b' 'b_2'
'a' 'a_3'
'b' 'b_3'
'a' 'a_4'
'e' 'e'
If somebody knows how to due this without loops, please share the solution.
0 Comments
More Answers (1)
A K
on 16 Jul 2013
You can try using "unique" function to get a listing of all unique strings in your row vector
Next try using "strmatch" for each uniqe string found to see if they are repeated. You can try
index = strmatch('unique_string', array_of_strings, 'exact'), where index will point to the locations in array_of_strings where unique_string occurs.
See Also
Categories
Find more on Characters and Strings in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!