Es gibt eine Reihe von Beiträgen mit Fragen, wie man das einschränken kann Col ... Aggregation Funktionen zu einer bestimmten Teilmenge.
https://community.jmp.com/t5/Discussions/Compute-Column-Mean-while-restricting-observations-used/mp...
https://community.jmp.com/t5/Discussions/JMP10-Col-Max-and-Col-Min-functions-returned-the-data-from/...
https://community.jmp.com/t5/Discussions/Col-Functions-and-Row-States/td-p/351705
https://community.jmp.com/t5/Discussions/How-do-I-use-the-Col-Maximum-Formula-with-a-quot-where-quot/mp/34840
https://community.jmp.com/t5/Discussions/Col-Functions-and-Row-States/mp/351705
https://community.jmp.com/t5/Discussions/Exclude-data-in-formula/td-p/512366
Anwendungsfälle:
- Ausschließen ausgeschlossen Zeilen aus der Aggregation:
Col Max(if(not(excluded()), :weight,.),: sex)
oder noch kürzer (wenn man keine Werte in den ausgeschlossenen Zeilen braucht);
Col Max(:weight, :sex, :excluded())
- Vergleichen Sie einige Daten mit einem Referenzdatensatz (Land A in Dies Post)
:data / Col Maximum(if(:country="A", :data,.))
Wie man in den obigen Beispielen sehen kann, ist die einfache Lösung eine Wenn Aussage innerhalb der Spalte xyz Aggregation:
col Mean( if(:sex=="M", :weight,.), :age)
col Mean( if(not(excluded()), :weight,.), :age)
Das Problem:
Der Ansatz ist EXTREM langsam - wenn die Teilmenge wenn -Bedingung enthält a Stringvergleich:
https://community.jmp.com/t5/Discussions/How-do-I-use-the-Col-Maximum-Formula-with-a-quot-where-quot/mp/578576/highlight/true#M78599
Dann skaliert die Zeit quadratisch mit der Anzahl der Zeilen und selbst für kleine Datensätze mit nur wenigen 1000 Einträgen dauert die Berechnung Sekunden .
Für Datensätze mit einigen Millionen Einträgen würde es dauern Monate (!!!) - wird aber durch ein Timeout gestoppt und es erscheint eine Fehlermeldung. Nicht nett!
Mein Wunsch:
Beheben Sie den Fehler
Noch besser:
Stellen Sie eine zusätzliche bereit wo Option für Spalte xyz Aggregationen
- was das Timing-Problem automatisch behebt: Erste schränkt den Datensatz ein und wendet dann die Aggregation an (--> viel schneller, auch wenn die coole "col ..." Beschleunigung einen Fehler hat)
- die Teilmengendefinitionen erleichtern,
Anstelle von (*) brauchen Sie nur:
col Mean(:weight, :age, where(:sex=="M"))
col Mean(:weight, :age, where(not(excluded())))
Timing-Beispiele, kopiert von https://community.jmp.com/t5/Discussions/How-do-I-use-the-Col-Maximum-Formula-with-a-quot-where-quot/mp/578576/highlight/true#M78599
