selecting the highest value
8 views (last 30 days)
Show older comments
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 Comment
Jan
on 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?!
Accepted Answer
David Young
on 9 Nov 2011
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);
0 Comments
More Answers (0)
See Also
Categories
Find more on Condensed Matter & Materials Physics in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!