Number of rows based on frequency of one integer and position of another integer
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Akzeptierte Antwort
Voss
am 17 Jan. 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 Kommentare
Voss
am 18 Jan. 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));
Weitere Antworten (1)
David Hill
am 17 Jan. 2022
r=unique(matrix(:,2));
r=r(end-4:end);
n=nnz(matrix(:,1)==10&ismember(matrix(:,2),r));
3 Kommentare
David Hill
am 18 Jan. 2022
r=unique(matrix(matrix(:,1)==10,2));
r=r(end-4:end);
n=nnz(matrix(:,1)==10&ismember(matrix(:,2),r));
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!