Number of rows based on frequency of one integer and position of another integer
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Hello. I was wondering if someone could help me with this:
Let's say you have a 2000 x 2 matrix, where all the elements are integers. How can we count the number of rows that contain the number 10 in its first column and any number with the highest 5 integers in the second column?
In other words, the following but where X is the fifth highest number in the second column:
nnz(matrix(:,1) == 10 & matrix(:,2) > X);
EDIT -> Very importantly, the list with the highest 5 integers must be determined for each integer in the first column. So, if one wanted to do this for the number 10, it must be determining the highest 5 integers in the second column WHEN the integer in the first column is 10.
Thanks!
0 comentarios
Respuesta aceptada
Voss
el 17 de En. de 2022
Get the set of unique numbers in the 2nd column:
col2_vals = unique(matrix(:,2));
The 5th highest is 4th from the end. So, to match any number within the highest 5:
nnz(matrix(:,1) == 10 & matrix(:,2) >= col2_vals(end-4));
4 comentarios
Voss
el 18 de En. de 2022
idx = matrix(:,1) == 10;
col2_vals = unique(matrix(idx,2)); % now: unique values of column 2 where column 1 is 10
nnz(matrix(idx,2) >= col2_vals(end-4));
Más respuestas (1)
David Hill
el 17 de En. de 2022
r=unique(matrix(:,2));
r=r(end-4:end);
n=nnz(matrix(:,1)==10&ismember(matrix(:,2),r));
3 comentarios
David Hill
el 18 de En. de 2022
r=unique(matrix(matrix(:,1)==10,2));
r=r(end-4:end);
n=nnz(matrix(:,1)==10&ismember(matrix(:,2),r));
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!