Si tengo una columna llamada X con 100 valores que es una secuencia de {1-100}, y quiero recuperar los 10 valores más pequeños, sé que puedo usar el siguiente comando:
dt = current data table();
temp1 = dt:X << get values;
temp2 = quantile(0.1,temp1);
dt << get rows where(:X<TEMP2></TEMP2>
Digamos que estoy reemplazando los 10 valores más grandes (es decir, 91-100) con valores faltantes, ¿hay alguna manera de obtener los mismos 10 valores más pequeños? Creo que la función Quantile no tendrá en cuenta los valores faltantes.
Agradezco la ayuda
¿Quieres obtener las filas o los valores? Aquí hay un ejemplo de cómo debería poder obtener los 10 valores no perdidos más pequeños
temp1 = Sort Ascending(dt:X << get values); //get values in column Value
temp1 = temp1[Loc(temp1)]; //ignore missing
tensmallest = temp1[1::10]; //get 10 first values in list
Ver por ti mismo.
Names Default to Here( 1 );
dt = New Table( "Untitled 2",
Add Rows( 10 ),
New Column( "Full",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] )
),
New Column( "Partial",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 2, 3, 4, 5, 6, 7, ., ., .] )
)
);
values = :full << Get As Matrix;
Show( Quantile( 0.1, values ) );
values = :Partial << Get As Matrix;
Show( Quantile( 0.1, values ) );
La presencia de valores perdidos cambia el cuantil de la muestra, por lo que, por supuesto, cambiará las filas seleccionadas.