Finden Sie das erste Element mit Bedingung in einer SpalteHallo, ich habe Daten mit zwei Spalten: Gruppe und Punktzahl, und ich möchte die dritte Spalte namens „erste“ berechnen, die die „erste Punktzahl pro Gruppe“ zurückgibt, die nicht 10000000000 ist. In diesen Beispieldaten ist Gruppe a = 0, Gruppe b = 53. und da Gruppe c nur 10000000000 enthält, wird dafür nichts angezeigt.
Könnte mir jemand mit einer JMP-Formel für diese Spalte helfen, aber nicht für JSL? Vielen Dank!
| Gruppe | Punktzahl | Erste |
| A | 10000000000 | 0 |
| A | 0 | 0 |
| A | 100 | 0 |
| A | 10000000000 | 0 |
| A | 8 | 0 |
| A | 10000000000 | 0 |
| A | 10000000000 | 0 |
| A | 10000000000 | 0 |
| B | 53 | 53 |
| B | 10000000000 | 53 |
| B | 1 | 53 |
| C | 10000000000 | . |
| C | 10000000000 | . |
| C | 10000000000 | . |
Qualitäts- und VerfahrenstechnikBetreff: Erstes Element mit Bedingung in einer Spalte findenHier ist ein anderer Ansatz zur Lösung des Problems.Dieser Ansatz ist ein Skript.Es sollte effizienter sein als der vorherige Ansatz mit einer einzelnen Formelspalte.Es findet zunächst die ersten Werte, extrahiert sie in eine neue Tabelle und verwendet dann die Update-Plattform, um die Werte wieder in die ursprüngliche Datentabelle zusammenzuführen.
names default to here(1);
dt=current data table();
// Create a column that finds the first values
dt<<NEW column=""></NEW>
Betreff: Erstes Element mit Bedingung in einer Spalte findenDas sind viele Zeilen. Diese Formel benötigt möglicherweise weniger Speicher. Es wird davon ausgegangen, dass der erste Wert ≠ 10000000000 immer kleiner als 10000000000 ist.
If(Col Min(:score, :group) == 10000000000,
.,
Col Min(
:score[Col Min(Row(), :group, :score == 10000000000)],
:group
)
)
Betreff: Erstes Element mit Bedingung in einer Spalte findenDanke, Jim! Ich habe Ihre Formel direkt in meine Daten eingefügt und noch einmal überprüft – sie hat bei den obersten ~7000 Zeilen funktioniert, aber von da an ist alles „.“ und zeigt nicht die erste Zahl an, die nicht 10000000 ist. Als ich die Formel eingegeben habe, lief sie lange, sodass ich Esc drücken musste, um JMP freizugeben. Ist das die Ursache dafür? Ich habe insgesamt etwa 7000.000 Zeilen.Betreff: Erstes Element mit Bedingung in einer Spalte findenAnhand des Bildschirmauszugs der Formel kann ich nicht erkennen, ob Sie die Spalten korrekt referenzieren.Das heißt, platzieren Sie ein „:“ vor den Spaltennamen, aber nicht vor „curgroup“ und „value“?
Welche Fehlermeldungen erhalten Sie?
Was bedeutet es, wenn Sie sagen, dass es nicht richtig funktioniert?Erhalten Sie nicht die richtigen Werte oder erhalten Sie keine Ergebnisse?
Ich habe Ihrer Beispieldatentabelle eine Spalte namens „Jims Formel“ beigefügt, in der meine Formel auf die Datentabelle angewendet wird.Auf diese Weise erhalten Sie eine funktionierende Version der Formel zum Vergleich mit dem, was Sie erstellen möchten.
Betreff: Erstes Element mit Bedingung in einer Spalte findenHallo Jim, danke für die Antwort. Ich habe es in die Formel eingefügt und den Spaltennamen ersetzt, aber es hat nicht die richtige Antwort ergeben. Könnten Sie mir helfen, den folgenden Screenshot zu überprüfen? Danke schön.

Betreff: Erstes Element mit Bedingung in einer Spalte findenHier ist eine Möglichkeit, die Formel zu schreiben
curgroup = :group;
value = :score[Min(
Current Data Table() << get rows where(
:group == curgroup & :score != 10000000000
)
)];