Rufen Sie Zeilen ab, die eine Bedingung innerhalb einer Spaltenformel erfüllenAlle,
Wahrscheinlich eine einfache Frage - aber ich suche nach Hilfe. Gibt es eine Möglichkeit, Zeilen zu erhalten, die einer Bedingung innerhalb einer Spaltenformel entsprechen?
In dem unten gezeigten Beispiel sollte man in der Lage sein, die gruppierte Summe einer bestimmten Gruppe zu erreichen. Wenn ich noch eine Bedingung hinzufügen wollte, sagen wir on :height should be > 60 , wie kann ich das erreichen.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column("CondSum",Numeric,Continuous,Formula(Col Sum(:weight,:age)));Außerhalb einer Spaltenformel glaube ich, dass das einfach ist und es erreichen kann. Ich möchte dies jedoch nach Möglichkeit über eine Spaltenformel implementieren.
Betreff: Zeilen abrufen, die eine Bedingung innerhalb einer Spaltenformel erfüllenDie Formel scheint nur ausgewertet zu werden, wenn sich die Altersspalte ändert.Die folgende Formel scheint jedoch, um Ihnen das zu geben, was Sie wollen
myheight = :height;
myage = :age;
Sum( :weight[Current Data Table() << get rows where( :age == myage & :height >= myheight )] );
Betreff: Zeilen abrufen, die eine Bedingung innerhalb einer Spaltenformel erfüllenDaher vermute ich, dass es etwas damit zu tun hat
Das Ergebnis wird intern zwischengespeichert, sodass mehrere Auswertungen effizient sind
Kann es aber nicht genau sagen.Wenn Sie nur eine Zwischensäule verwenden, scheint es gut zu funktionieren.
Names default to here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New COlumn("Conditional", Formula(
myheight = :height;
:height >= myheight; // should always be 1
//:height >= .5*weight // this might be a better example
));
dt << New Column("CondSum",Numeric,Continuous,Formula(
Col Sum( :weight, :age, :Conditional );
));Betreff: Zeilen abrufen, die eine Bedingung innerhalb einer Spaltenformel erfüllenHallo, es ist eine nette Idee, einen Vergleich als byVar-Argument einzufügen:
Col Sum( :weight, :age, :height >= 60 )
Ich bin daran interessiert, einen Vergleich in das byVar-Argument zu setzen, das es mit der aktuellen Zeile vergleicht:
myheight = :height;
Col Sum( :weight, :age, :height >= myheight )
Das funktioniert nicht wie erwartet: Die Berechnung zeigt eine verwirrende Menge von Zahlen, und dann ändern sich alle auf "1", wenn ich die Größe von jemandem ändere.
Gibt es eine Möglichkeit, dies zu tun?
(Nur für einen besseren Bezugsrahmen versuche ich in meiner aktuellen Tabelle, Zeilen zu zählen, in denen das Datum in colA größer als der Datumswert in colA ist und in denen das Datum in colB kleiner als der Datumswert in colB ist.)
Betreff: Zeilen abrufen, die eine Bedingung innerhalb einer Spaltenformel erfüllenHallo Uday,
Sie können die Bedingung tatsächlich einfach als nächstes Argument eingeben.
Col Sum( :weight, :age, :height > 60 )
In diesem Big-Class-Beispiel sieht es auf den ersten Blick vielleicht nicht richtig aus, da die Summe für die 12-Jährigen unter und über 60 Zoll gleich ist.Es handelt sich nur um die gleichen Summen.