selecting the highest value

I have dataset of 5 columns
1 3 .5 .6 89
1 2 03 .6 98
1 8 .3 .3 90
2 3 .2 .5 87
2 87 02 1 89
;
;
;
;
10 12 01 .3 87
10 12 03 07 99
10 0.3 0.5 10 78
i want to select highest values in column 5 for erach unique value,i nees as
1 8 .3 .3 90
2 87 02 1 89
10 12 03 07 99
please help

1 commentaire

Jan
Jan le 9 Nov 2011
What is the input format? The semicolons look confusing...
Which values should be unique? Isn't 98 the highest value in column 5 for the 1 in the first column?!

Connectez-vous pour commenter.

 Réponse acceptée

David Young
David Young le 9 Nov 2011

0 votes

I don't understand why the first row of your result is not
1 2 03 .6 98
as 98 is bigger than 90. Assuming you've made a mistake, the following code works, though there may, as ever, be neater methods:
data = [1 3 .5 .6 89
1 2 03 .6 98
1 8 .3 .3 90
2 3 .2 .5 87
2 87 02 1 89
10 12 01 .3 87
10 12 03 07 99
10 0.3 0.5 10 78];
indexcol = 1;
valuecol = 5;
indexlist = data(:,indexcol);
indexes = unique(indexlist);
results = zeros(length(indexes), size(data,2));
for k = 1:length(indexes)
rows = find(indexlist == indexes(k));
[unused, maxsubsetrow] = max(data(rows, valuecol));
maxrow = rows(maxsubsetrow);
results(k, :) = data(maxrow, :);
end
disp(results);

Plus de réponses (0)

Catégories

En savoir plus sur Vehicle Dynamics Blockset dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by