重複したデータを削除する方法

조회 수: 36 (최근 30일)
kanako machii
kanako machii 2020년 9월 16일
답변: Akira Agata 2020년 9월 18일
重複したデータを削除する方法を教えてください。
具体的には下記のような処理を行いたいと考えています。
A = [600 142 30 75 13; 600 141 30 75 14; 600 142 30 80 14]
Aの5列目の値が他の行の5列目の値と重複している場合に、行数が小さいほうの行を削除したいです。
この場合は1行目と2行目の5列目の値が重複しているので、1行目を削除して、下記のBのような行列を求めたいと考えています。
B=[600 141 30 75 14; 600 142 30 80 14]
uniqueを使えばできそうなのですが、うまくいきません。
宜しくお願い致します。

채택된 답변

Akira Agata
Akira Agata 2020년 9월 18일
findgroupssplitapply を使う方法はいかがでしょうか?
A = [600 142 30 75 13; 600 141 30 75 14; 600 142 30 80 14];
group = findgroups(A(:,4));
B = splitapply(@(x) x(end,:), A, group);
実行結果は以下のとおりです。
>> B
B =
600 141 30 75 14
600 142 30 80 14

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 ワークスペース変数と MAT ファイル에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!