Averaging values in rank orderings with repeats
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I'm wondering if there is a straightforward way for me to complete the following task.
Suppose u=[1,3,2,2,4,7,2,5] and I wish to create a vector of rank orderings that accounts for the fact that the three 2's are tied for ranks 2, 3, and 4 by using the average of these three ranks, (2+3+4)/3=3 in each corresponding entry.
More specifically, I want the rank ordering vector to be [1,5,3,3,6,8,3,7]. Notice how there is no 2 and no 4.
0 Kommentare
Akzeptierte Antwort
Kelly Kearney
am 24 Sep. 2013
The accumarray function should do what you want:
u = [1,3,2,2,4,7,2,5];
nu = length(u);
rank = (1:nu)';
ravg = accumarray(sort(u'), rank, [nu 1], @mean);
ravg(u)
2 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!