Problem im JMP-Skript für SchleifeHallo, ich habe zwei Fragen -
Fragen1 -
Ich habe einfache Daten (im Anhang) und ein Skript, das einwandfrei funktioniert, aber solange ich es in eine for-Schleife konvertieren möchte. Nicht das Richtige bekommen.
ZIEL - Ich möchte den Top10% Widerstandswert für jeden Strom. Meine Daten sind nicht symmetrisch, dh die Anzahl der Datenpunkte für jeden Strom ist unterschiedlich.
In den gleichen Daten gibt es nur 7 aktuelle Werte und in realen Daten können Hunderte von Werten angenommen werden.
Vorgehensweise - Ich erstelle eine Quantiltabelle, vergleiche meinen Widerstandswert mit einem Quantilwert von 90% und füge eine zusätzliche Spalte 'Top10%' hinzu. Bei Beispieldaten mit 7 aktuellen Werten funktioniert alles einwandfrei, aber ich brauche eine Schleife dafür. Können Superuser mir zeigen, was der Fehler ist, den ich in meiner for-Schleife mache? Dies hilft zu lernen, wie man for-Schleifen implementiert.
Irgendeine Hilfe ?
Frage 2 - Was ist der beste Weg, um die besten 95% -Daten zu erhalten?
Hilfe hier?
SkriptingBetreff: Problem im JMP-Skript für SchleifeIch glaube, das folgende Skript ist eine einfachere Methode, um zu den gewünschten Ergebnissen zu gelangen

Names Default To Here( 1 );
dtF2 = Data Table( "Final_Data" );
dtSum = dtF2 << Summary(
invisible,
Group( :Current ),
Quantiles( 90, :Res ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "stat" ),
link to original data table( 0 )
);
dtSum << delete columns( N Rows );
dtF2 << Update(
With( dtSum ),
Match Columns( :Current = :Current )
);
Close( dtSum, nosave );
dtF2 << New Column( "Top10%",
character,
formula( If( :Res >= :Quantiles90, "Top10" ) )
);
Betreff: Problem im JMP-Skript für SchleifeJa, vollkommen in Ordnung. Viel besser und einfacher. Mir war nicht bewusst, dass wir auch Quantile aus der Übersichtstabelle erhalten können. Ich implementiere es so, wie Sie es beschrieben haben.
Abgesehen von den Quantil- und Top-10% -Daten, Was war in meiner "for-Schleife" falsch?
Danke für die Hilfe.
Betreff: Problem im JMP-Skript für SchleifeBezüglich Ihrer For () - Schleifenlogik
- Eine Spalte kann nur 1 Formel haben. Wenn die Formeldefinition in der For () - Schleife enthalten ist, wird für jede Schleife eine andere Formel angegeben. Ich weiß nicht genau, was JMP tun würde. Im besten Fall würde es jede Formel ersetzen, wenn eine neue erstellt wurde, und nur die zuletzt erstellte Formel erhalten.
- Wenn Sie den Wert "Fail" in jedem If festlegen, ist Ihre Logik nur dann korrekt, wenn die letzte Ebene die Ebene für die aktuelle Zeile ist. Ansonsten ist Level 3 das aktuelle Level für die angegebene Zeile. JMP würde den Wert in der If-Anweisung für Level 1 auf Fail, Level 2 auf Fail, Level 3 auf Top10% setzen, aber die For () - Schleife wird fortgesetzt. Wenn Sie also auf Level 4 testen, wird Fail .... ..... und alle anderen Levels.
- Bei einer Formel für eine Spalte, deren Variablenwerte außerhalb der Formel definiert sind (dh dtF2, dtQ und die Verweise auf die Spalten in der dtQ-Datentabelle), müssen diese Werte und die Datentabelle immer dann vorhanden sein, wenn die Datentabelle mit der Formel wird geöffnet. Wenn Sie solche Formeln verwenden, müssen Sie die Formel löschen, sobald die Datentabelle die Formel ausgeführt hat.
dtF2:Name("Top10%") << delete formula;
Hier ist eine Version der Formel, von der ich denke, dass sie funktionieren würde ..... Ich habe sie nicht getestet, aber ich denke, Sie werden den Ansatz sehen.
dtF2 << New Column( "Top10%",
character,
FORMULA(
For( i = 1, N Rows( dtQ ), i++,
x = "";
If( dtF2:Current == dtQ:Level[i] & dtF2:Name( "Res" ) >= dtQ:Name( "90%" )[i],
x = "Top10"
);
);
If( x == "", x = "Fail" );
x;
)
);