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.

 채택된 답변

Matt J
Matt J 2012년 11월 19일

2 개 추천

wd=withduplicates;
[~,idx]=unique( strcat(wd(:,1),wd(:,2),wd(:,3)) , 'rows');
withoutduplicates=wd(idx,:)

댓글 수: 6

Nicholas
Nicholas 2012년 11월 19일
That worked! Thank you.
Nicholas
Nicholas 2012년 11월 19일
I'm getting an orange warning in the Command Window every time I run the code you gave:
"Warning: The 'rows' input is not supported for cell array inputs."
How do I suppress this?
Thanks.
Matt J
Matt J 2012년 11월 19일
편집: Matt J 2012년 11월 19일
Ah. Just omit the 'rows' input argument, then. It's not necessary.
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.
Nowadays, you would just use strings,
withoutduplicates=unique(string(withduplicates),'rows')
Michael Boateng
Michael Boateng 2021년 2월 16일
This worked well. Thank you.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Cell Arrays에 대해 자세히 알아보기

질문:

2012년 11월 19일

댓글:

2021년 2월 16일

Community Treasure Hunt

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

Start Hunting!

Translated by