dt = Open( "$sample_data/big class.jmp" );
nr = N Rows( dt ); // needed below to find the end of the ascending sort list
rowsSortedByWeight = Rank( dt:weight << getvalues ); // Rank gives the indexes, ascending
heavyRows = rowsSortedByWeight[nr - 3 :: nr]; // four biggest at end
For Each( {r}, heavyRows, // get each row number into r from the heavyRows matrix
// look in the log for the report...
Write( Eval Insert( "\!nname=^dt:name[r]^ weight=^dt:weight[r]^" ) )
);
nom=KIRK poids=134
nom=LESLIE poids=142
nom=JACLYN poids=145
nom=LAWRENCE poids=172
edit : cela fonctionnera mieux avec les valeurs manquantes :
dt = Open( "$sample_data/big class.jmp" );
rowsSortedByWeight = Rank( dt:weight << getvalues ); // Rank gives the indexes, ascending
nr = N Rows( rowsSortedByWeight ); // should handle missing values
heavyRows = rowsSortedByWeight[nr - 3 :: nr]; // four biggest at end
For Each( {r}, heavyRows, // get each row number into r from the heavyRows matrix
// look in the log for the report...
Write( Eval Insert( "\!nname=^dt:name[r]^ weight=^dt:weight[r]^" ) )
);
Rank() renverra une courte liste, sans index des valeurs manquantes, utilisez donc le nombre de lignes dans la liste classée plutôt que le nombre de lignes dans la table de données.
plus de modification : Et si vous souhaitez sélectionner les lignes du tableau,
dt << selectrows( heavyRows )
Merci beaucoup à Craige_Hales pour une réponse rapide.
Ça marche bien