JMP 16.2 Äquivalent zur Excel-PERCENTILEANK-Funktion?Möchte das Perzentil einer Zahl innerhalb eines Datensatzes finden. Wie viel Prozent der Werte liegen über/unter einer bestimmten Zahl? Gibt es außer dem Betrachten eines CDF- oder Prob Dist-Diagramms einen vorhandenen Pfad, um diese Nummer zu erhalten, oder ist dies eine JSL-Aufgabe?
AndereBetreff: JMP 16.2 Äquivalent zur Excel-PERCENTILEANK-Funktion?Jim:
Vielen Dank für das bereitgestellte Codierungsbeispiel. Da ich versuche, meine JSL-Fähigkeiten zu verbessern, sind diese Arten von Beispielen großartige Tutorials. Einmal mehr schätze ich Ihren Beitrag.
Greg
Betreff: JMP 16.2 Äquivalent zur Excel-PERCENTILEANK-Funktion?Ron:
Vielen Dank. Es funktioniert großartig.
Greg
Betreff: JMP 16.2 Äquivalent zur Excel-PERCENTILEANK-Funktion?Hallo @WoHNY ,
Während andere fantastische Lösungen bereitgestellt haben, möchte ich eine grundlegendere anbieten. Versuchen Sie das folgende Skript, es ist schnell genug für mich auf einem mittelmäßigen Computer.
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
Betreff: JMP 16.2 Äquivalent zur Excel-PERCENTILEANK-Funktion?Hier ist eine JMP-Funktion, die genau die Methodik verwendet, die in der Excel-Funktion PERCENTILEANK verwendet wird, wie auf der Microsoft Excel-Hilfeseite beschrieben
https://support.microsoft.com/en-us/office/percentrank-function-f1b5836c-9619-4847-9fc9-080ec9024442
Unten habe ich die Beispieltabelle von der Hilfeseite zusammen mit der von mir erstellten JMP-Funktion bereitgestellt
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);Betreff: JMP 16.2 Äquivalent zur Excel-PERCENTILEANK-Funktion?Georg:
Danke für deinen Beitrag. Ich habe die JSL an meinen Tabellen- und Spaltennamen angepasst, aber ich vermute, dass dies eine sehr prozessorintensive Berechnung ist. Es ist über 20 Minuten her und die Räder drehen sich immer noch. Ich habe ungefähr 240.000 Datenzeilen zu verarbeiten. Es sieht so aus, als würde ich bei der Excel-Methode bleiben, die ich eingerichtet habe, bis ich Zeit finde, dieses Problem eingehender zu untersuchen. Danke noch einmal.
Greg
Betreff: JMP 16.2 Äquivalent zur Excel-PERCENTILEANK-Funktion?David:
Danke für die Antwort. Ich war mit der Quantil-Statistik vertraut. Damit gebe ich das Quantil an und JMP generiert den Wert, der diesem Quantil entspricht. Ich möchte den Wert angeben und das Quantil generieren. Meine anfängliche Erklärung war unzureichend.
Greg
Betreff: JMP 16.2 Äquivalent zur Excel-PERCENTILEANK-Funktion?Sie können dies nach Belieben mit einer Formel oder einem JSL-Snippet tun, siehe Screenshot und Skript unten.
Der erste Teil der Formel generiert die Tabelle für Werte und Perzentile, der zweite sucht das Perzentil für die aktuelle Zeile.

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 )];
)
);
Betreff: JMP 16.2 Äquivalent zur Excel-PERCENTILEANK-Funktion?Sie können die Quantile-Statistik innerhalb der Tabulate-Plattform verwenden (Analyze>Tabulate).