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