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]^" ) )
);
nombre=KIRK peso=134
nombre=LESLIE peso=142
nombre=JACLYN peso=145
nombre=LAWRENCE peso=172
editar: esto funcionará mejor con valores faltantes:
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() devolverá una lista corta, sin índices de valores faltantes, así que use el número de filas en la lista clasificada en lugar del número de filas en la tabla de datos.
más edición: Y si quiere seleccionar las filas de la tabla,
dt << selectrows( heavyRows )
Muchas gracias a Craige_Hales por su rápida respuesta.
Funciona bien