How to find the 12th highest value for every year

2 次查看(过去 30 天)
I have a data set that I have made into a table and used the sort funtion to make it into descending order based on the year followed by the 2nd column values i.e.
2014 3.98 10.34
2014 3.93 10.24
2014 3.90 10.18
.
.
.
2006 0.61 5.05
2006 0.54 5.01
2006 0.52 4.98
2006 0.50 4.89
2006 0.50 4.79
I want to find the 12th highest value for each year (the 12th row for every year).
The number of data measurements for each year are not equal. For example, in year 2014 there might be 12000 rows but in year 2010 there may only be 11500 rows of data
Thank you in advance.

采纳的回答

Nicky Benedict
Nicky Benedict 2021-6-9
I figured it out.
T_sort = sortrows(T,[1,2,3],'descend');
[yr,index] = unique(T_sort.Years);
index_new = index + 11;
hour_12 = T_sort(index_new,:);

更多回答(1 个)

SALAH ALRABEEI
SALAH ALRABEEI 2021-6-7
Since you already sorted them, what you need to do now is call the first highest 12 as follows
% Assuming the matrix is A where the 1st col is the years.
B = [];
years = unique(A(:,1));
for i = 1: length(years)
B= [B,(A(A(:,1)==years(i),12))];
end
  3 个评论
SALAH ALRABEEI
SALAH ALRABEEI 2021-6-9
Sorry that was my mistake. Please add replace this wth what is inside the loop
%
btemp = A(A(:,1)==years(i),:);
B = [B ; btemp(12,:) ];
Nicky Benedict
Nicky Benedict 2021-6-9
The approach you took ended up just giving me the years but I managed to figure it out with the help of the "unique" function you had in your code. Thank you for all your help. I appreciate it. I posted my code down below if you want to know what I did.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

产品


版本

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by