How to remove duplicate rows in a matrix by considering the repeated values in a specific column?
16 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Gayan Lankeshwara
el 23 de Oct. de 2019
Comentada: Zach Williams
el 23 de Abr. de 2021
%% consider the following example.
A = [1 2 4; 3 5 7;1 5 8; 2 9 4]
In matrix A, column 1 has a duplicate value which is 1. I need to keep the first met value and remove the rest accordingly. At the same time, the indices of non-duplicates should not be changed.
The possible solution should be,
A_without_dup = [1 2 4;3 5 7;2 9 4]
%% only the final row is removed because a duplicate is found in that row based on the value of column 1 in A.
Thanks.
0 comentarios
Respuesta aceptada
Mohammad Sami
el 1 de Nov. de 2019
You can use the unique function to return you the index of the unique values in the first column.
Use the stable keyword so the order is preserved. You can then use the index to keep the unique rows.
[~,uidx] = unique(A(:,1),'stable');
A_without_dup = A(uidx,:);
3 comentarios
David Linsenbardt
el 12 de En. de 2021
You can also combine rows w/ stable and remove rows where duplicates exist in multiple columns:
[~,uidx] = unique(data(:,[1 2]),'rows','stable');
data = data(uidx,:);
Más respuestas (0)
Ver también
Categorías
Más información sobre Shifting and Sorting Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!