Get distinct row based on row number or value

1 回表示 (過去 30 日間)
Furqan Hashim
Furqan Hashim 2020 年 10 月 11 日
編集済み: Ameer Hamza 2020 年 10 月 11 日
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];

採用された回答

Ameer Hamza
Ameer Hamza 2020 年 10 月 11 日
編集済み: Ameer Hamza 2020 年 10 月 11 日
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), :);

その他の回答 (0 件)

製品


リリース

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by