Find maximum values related to index

1 visualización (últimos 30 días)
mark cejas
mark cejas el 1 de Ag. de 2018
Comentada: jonas el 1 de Ag. de 2018
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

Respuesta aceptada

jonas
jonas el 1 de Ag. de 2018
Editada: jonas el 1 de Ag. de 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 comentarios
mark cejas
mark cejas el 1 de Ag. de 2018
Thank you Jonas. I appreciate this elegant solution and the intro to the great function. Haven’t checked yet, but it looks great!!!
jonas
jonas el 1 de Ag. de 2018
You're welcome, let me know if you encounter some bug.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Productos


Versión

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by