JMP 16.2 ¿Equivalente a la función PERCENTIRANK de Excel?Me gustaría encontrar el percentil de un número dentro de un conjunto de datos. ¿Qué porcentaje de valores están por encima/por debajo de un cierto número? Además de observar un gráfico CDF o Prob Dist, ¿hay una ruta existente para obtener este número o es una tarea de JSL?
OtroRe: JMP 16.2 ¿Equivalente a la función PERCENTIRANK de Excel?Jaime:
Gracias por el ejemplo de codificación proporcionado. Como estoy tratando de mejorar mis habilidades de JSL, este tipo de ejemplos son excelentes tutoriales. Una vez más agradezco tu aporte.
greg
Re: JMP 16.2 ¿Equivalente a la función PERCENTIRANK de Excel?Ron:
Muchas gracias. Funciona muy bien.
greg
Re: JMP 16.2 ¿Equivalente a la función PERCENTIRANK de Excel?Hola @WoHNY ,
mientras que otros han brindado soluciones fantásticas, permítanme ofrecer una más básica. pruebe el siguiente script, es lo suficientemente rápido para mí en una computadora mediocre.
Names Default To Here( 1 );
dt = New Table( "rank percentile - example",
New Column( "X", Numeric, "Continuous", Formula( Random Normal( 20, 5 ) ), Set Selected ),
New Column( "rank percentile", Numeric, "Continuous", Format( "Percent", 12, 0 ), Formula( Col Rank( :X ) / Col Number( :X ) ) )
);
dt << Add Rows( 1000000000 );
Ron
Re: JMP 16.2 ¿Equivalente a la función PERCENTIRANK de Excel?Aquí hay una función JMP que usa la metodología exacta utilizada en la función de Excel, PERCENTIRANK como se describe en la página de ayuda de Microsoft Excel
https://support.microsoft.com/en-us/office/percentrank-function-f1b5836c-9619-4847-9fc9-080ec9024442
A continuación, proporcioné la tabla de ejemplo de la página de ayuda, junto con la función JMP que creé.
Names Default To Here( 1 );
New Table( "Excel Example",
Add Rows( 10 ),
New Column( "Data",
Numeric,
"Nominal",
Format( "Best", 12 ),
Set Values( [13, 12, 11, 8, 4, 3, 2, 1, 1, 1] )
)
);
dt = Current Data Table();
percentRank = Function( {col, value},{default local},
mydt = Current Data Table();
theValue = .;
theRows = mydt << get rows where( As Column( mydt, col ) == value );
If( N Rows( theRows ) > 0,
gt = Col Number( If( As Column( mydt, col )[Row()] > value, Column( mydt, col )[Row()], . ) );
lt = Col Number(
If( As Column( mydt, col )[Row()] < value & Is Missing( As Column( mydt, col )[Row()] ) == 0,
As Column( mydt, col )[Row()],
.
)
);
theValue = lt / (lt + gt);
,
lower = upper = .;
lower = Col Max( If( As Column( mydt, col ) < value & Is Missing( As Column( mydt, col )[Row()] ) == 0, Column( mydt, col )[Row()], . ) );
upper = Col Min( If( As Column( mydt, col ) > value, Column( mydt, col )[Row()], . ) );
// get the percentileRank for upper and lower
upperPR = percentRank(col,upper);
lowerPR = percentRank(col,lower);
intervalPCT=(value-lower)/(upper-lower);
theValue = lowerPR+(intervalPCT*(upperPR-lowerPR));
);
Return( theValue );
);
x = percentRank( "data", 8 ); // a data point found in the data
show("found in table",x);
x = percentRank( "data", 5 ); // a data point not found in the data
show("Not found in table",x);Re: JMP 16.2 ¿Equivalente a la función PERCENTIRANK de Excel?Jorge:
Gracias por su aporte. Ajusté el JSL para que coincida con el nombre de mi tabla y columna, pero supongo que este es un cálculo que requiere un uso intensivo del procesador. Han pasado más de 20 minutos y las ruedas siguen girando. Tengo alrededor de 240K filas de datos con las que lidiar. Parece que me quedaré con el método de Excel que configuré hasta que pueda encontrar tiempo para investigar este problema con más profundidad. Gracias de nuevo.
greg
Re: JMP 16.2 ¿Equivalente a la función PERCENTIRANK de Excel?David:
Gracias por la respuesta. Estaba familiarizado con la estadística Quantile. Con esto estoy especificando el Cuantil y JMP está generando el valor que coincide con ese Cuantil. Quiero especificar el valor y generar el Cuantil. Mi explicación inicial fue insuficiente.
greg
Re: JMP 16.2 ¿Equivalente a la función PERCENTIRANK de Excel?Puede hacer esto mediante una fórmula o un fragmento de JSL como desee, vea la captura de pantalla y el script a continuación.
La primera parte de la fórmula genera la tabla de valores y percentiles, la segunda busca el percentil de la fila actual.

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt << New Column( "PercentileRank",
Formula(
cdf_arr = CDF( :weight << get values );
cdf_arr[2][Loc( cdf_arr[1], :weight )];
)
);
Re: JMP 16.2 ¿Equivalente a la función PERCENTIRANK de Excel?Puede usar la estadística Cuantiles dentro de la plataforma Tabular (Analyze>Tabular).