JMP 16.2 Equivalente alla funzione PERCENTILERANK di Excel?Vorrei trovare il percentile di un numero all'interno di un set di dati. Quale percentuale di valori è al di sopra/al di sotto di un certo numero? Oltre a guardare un grafico CDF o Prob Dist, esiste un percorso esistente per ottenere questo numero o si tratta di un'attività JSL?
AltroRi: JMP 16.2 Equivalente alla funzione PERCENTILERANK di Excel?Jim:
Grazie per l'esempio di codifica fornito. Mentre sto cercando di migliorare le mie abilità JSL, questi tipi di esempi sono ottimi tutorial. Ancora una volta apprezzo il tuo contributo.
Greg
Ri: JMP 16.2 Equivalente alla funzione PERCENTILERANK di Excel?Ron:
Grazie molto. Funziona benissimo.
Greg
Ri: JMP 16.2 Equivalente alla funzione PERCENTILERANK di Excel?CIAO @WoHNY ,
mentre altri hanno fornito soluzioni fantastiche, lascia che te ne offra una più semplice. prova il seguente script è abbastanza veloce per me su un computer 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
Ri: JMP 16.2 Equivalente alla funzione PERCENTILERANK di Excel?Ecco una funzione JMP che utilizza la metodologia esatta utilizzata nella funzione Excel, PERCENTILERANK come descritto nella pagina della guida di MicroSoft Excel
https://support.microsoft.com/en-us/office/percentrank-function-f1b5836c-9619-4847-9fc9-080ec9024442
Di seguito ho fornito la tabella di esempio dalla pagina della guida, insieme alla funzione JMP che ho creato
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);Ri: JMP 16.2 Equivalente alla funzione PERCENTILERANK di Excel?Giorgio:
Grazie per il tuo contributo. Ho regolato il JSL in modo che corrisponda al nome della mia tabella e colonna, ma immagino che si tratti di un calcolo molto intensivo per il processore. Sono passati più di 20 minuti e le ruote stanno ancora girando. Ho circa 240.000 righe di dati da gestire. Sembra che continuerò con il metodo Excel che ho impostato fino a quando non troverò il tempo per esaminare questo problema in modo più approfondito. Grazie ancora.
Greg
Ri: JMP 16.2 Equivalente alla funzione PERCENTILERANK di Excel?Davide:
Grazie per la risposta. Conoscevo la statistica quantile. Con questo sto specificando il quantile e JMP sta generando il valore che corrisponde a quel quantile. Voglio specificare il valore e generare il quantile. La mia spiegazione iniziale era insufficiente.
Greg
Ri: JMP 16.2 Equivalente alla funzione PERCENTILERANK di Excel?Puoi farlo con una formula o uno snippet JSL come preferisci, vedi screenshot e script di seguito.
La prima parte della formula genera la tabella per valori e percentili, la seconda cerca il percentile per la riga corrente.

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 )];
)
);
Ri: JMP 16.2 Equivalente alla funzione PERCENTILERANK di Excel?È possibile utilizzare la statistica Quantiles all'interno della piattaforma Tabulate (Analyze>Tabulate).