MATLAB: Selecting the highest value

datamining

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

Best Answer

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);