MATLAB Answers

Remove Duplicate Rows in a Cell Array

179 views (last 30 days)
Nicholas
Nicholas on 19 Nov 2012
Commented: Matt J on 4 Sep 2020
Hello,
I'm trying to remove duplicate rows in a cell array. I'm familiar with the 'unique' function for use on vectors (or individual columns of a cell array) but I'm stumped on how to work on the whole array at once.
What I'm looking for is the same as the Excel button "Remove Duplicates" which does this:
withduplicates={
'Bear' 'Chicago' '1 yr'
'Bear' 'Chicago' '1 yr'
'Bear' 'Chicago' '1 yr'
'Bear' 'Miami' '2 yr'
'Bear' 'Miami' '2 yr'
'Lion' 'Denver' '1 yr'
'Lion' 'Miami' '2 yr'
'Lion' 'Miami' '2 yr'
'Lion' 'Miami' '2 yr'
'Tiger' 'Denver' '1 yr'
'Tiger' 'Chicago' '1 yr'
'Tiger' 'Chicago' '1 yr'}
withoutduplicates={
'Bear' 'Chicago' '1 yr'
'Bear' 'Miami' '2 yr'
'Lion' 'Denver' '1 yr'
'Lion' 'Miami' '2 yr'
'Tiger' 'Denver' '1 yr'
'Tiger' 'Chicago' '1 yr'}
Any help is greatly appreciated.

  0 Comments

Sign in to comment.

Accepted Answer

Matt J
Matt J on 19 Nov 2012
wd=withduplicates;
[~,idx]=unique( strcat(wd(:,1),wd(:,2),wd(:,3)) , 'rows');
withoutduplicates=wd(idx,:)

  5 Comments

Show 2 older comments
Matt J
Matt J on 19 Nov 2012
Ah. Just omit the 'rows' input argument, then. It's not necessary.
Arne T
Arne T on 4 Sep 2020
How do you handle following Problem:
withduplicates={
'exampleA' 'example'
'example' 'Aexample'}
Cause this rows are not the same, but your code would delete one of them.
Matt J
Matt J on 4 Sep 2020
Nowadays, you would just use strings,
withoutduplicates=unique(string(withduplicates),'rows')

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!