Ich versuche, eine Spaltenformel zu schreiben, die das Produkt aller (nicht leeren) Zeilen bis zur aktuellen Zeile berechnet.
Ich habe eine Beispieldatentabelle (& Screenshot) angehängt.
Ich versuche, die Spalte „Produkt“ als Produkt aller nicht leeren Zeilen aus der Spalte „Wert“ darzustellen. Ich zeige das manuell berechnete Ergebnis und die Berechnungen in „Gewünschtes Ergebnis“ und „Erklärung des gewünschten Ergebnisses“ rechts.

Ein paar Probleme mit dem Datensatz habe ich in der Beispieldatentabelle hervorzuheben versucht.
1. Die Anzahl der Zeilen pro „Gruppe“ variiert zwischen den Gruppen.
2. Die „Gruppe“ wird immer zusammen und in Ordnung sein. Alle Gruppe 1 werden zusammen sein. Gruppe 1 kommt immer vor Gruppe 2.
3. Die Spalte „Wert“ enthält nur eine nicht leere Zeile pro Gruppe. Es wird immer die erste Zeile dieser Gruppe sein.
Ich denke, dass dies möglicherweise eine Formel vom Typ „Schleife“ oder „für“ erfordert, habe aber nur begrenzte Erfahrung mit deren Aufbau.
Auch wenn Sie keine Lösung haben, freue ich mich über alle Gedanken oder Links zu Leitfäden oder anderen Diskussionen, von denen Sie glauben, dass sie mich zu einer Lösung führen könnten.
Vorherige Versuche:
Ich dachte, dass die Antwort von txnelson auf diese Frage ( https://community.jmp.com/t5/Discussions/How-to-multiply-all-elements-in-a-list/td-p/667633 ) funktionieren könnte, habe aber nicht das gewünschte Ergebnis erhalten.
Vielen Dank für Ihre Zeit und Hilfe!
JMP-Version: 17.2.0, Windows 10
Eine Option nutzt das Wissen, dass der Wert für jede Gruppe immer aus der ersten Zeile gefunden wird
If(Row() == 1,
val = 1;
);
If(Row() == Col Min(Row(), :Group),
val = val * :Value;
,
.;
);

Bearbeiten:
Und hier ist eine weitere Überprüfung, ob :Value fehlt oder nicht
If(Row() == 1,
val = 1;
);
If(!IsMissing(:Value),
val = val * :Value;
,
.
);
Sie sollten auch in der Lage sein, das erste If durch As Constant zu ersetzen.
As Constant(val = 1);
If(!IsMissing(:Value),
val = val * :Value;
,
.
);
Danke Jarmo, hat perfekt funktioniert!