Find maximum values related to index
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello community,
I am trying to write a for loop to find the maximum values in column 2 for each group variable in column 1. I tried a for loop to no avail. Any help would be appreciated.
The solution should result in a maximum value, corresponding row index, for each group variable in column 1. So, the solution should yield 1) the group index associated with stests(:,1) 2) maximum values of stests(:,2) per group index 3) the row index of stests corresponding to each max value result
I attached a 2418x2 matrix called stests.
I apologize ahead of time for my lack of proper data science language.
Very much appreciated.
Regards, Mark
0 commentaires
Réponse acceptée
jonas
le 1 Août 2018
Modifié(e) : jonas
le 1 Août 2018
Ideal job for findgroups and splitapply.
VAL is the max value in each group, located at id_l (local group index). For example, id_l=2 if max value is second value in group.
data=xlsread('stests.xlsx');
%%Find max value and local index
G=findgroups(data(:,1));
[VAL,id_l]=splitapply(@max,data(:,2),G);
%%Find global index
[~,b]=unique(data(:,1));
id_g=[id_l+b]-1;
%Store results
out=[VAL,id_g]
2 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!