Get distinct row based on row number or value

2 vues (au cours des 30 derniers jours)
Furqan Hashim
Furqan Hashim le 11 Oct 2020
Modifié(e) : Ameer Hamza le 11 Oct 2020
I have a table which contains products, owner and prices and products are not distinct as an example generate a dummy table using:
Upload = table();
Upload.Name = ['A'; 'B'; 'C'; 'C'];
Upload.Owner = ['D'; 'E'; 'F'; 'G'];
Upload.Price = [10; 20; 40; 30];
From the above table how can I get distinct rows based on row number. I want to get the 2nd row in case where there is a duplication the output would be:
Upload = table();
Upload.Name = ['A'; 'B'; 'C'];
Upload.Owner = ['D'; 'E'; 'G'];
Upload.Price = [10; 20; 30];
How can I achieve distinct row based on price value, where the choosen row would be the one where price is highest. The output would be:
Upload = table();
Upload.Name = ['A'; 'B'; 'C'];
Upload.Owner = ['D'; 'E'; 'F'];
Upload.Price = [10; 20; 40];

Réponse acceptée

Ameer Hamza
Ameer Hamza le 11 Oct 2020
Modifié(e) : Ameer Hamza le 11 Oct 2020
Try this
Upload = table();
Upload.Name = ['A'; 'B'; 'C'; 'C'];
Upload.Owner = ['D'; 'E'; 'F'; 'G'];
Upload.Price = [10; 20; 40; 30];
[~, ia] = unique(Upload.Name(end:-1:1));
New_Upload1 = Upload(end-ia+1, :);
[~, idx] = splitapply(@(x) max(x), Upload.Price, findgroups(Upload.Name));
New_Upload2 = Upload(cumsum(idx), :);

Plus de réponses (0)

Catégories

En savoir plus sur Tables dans Help Center et File Exchange

Produits


Version

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by