獲取滿足列公式中條件的行全部,
可能是一個簡單的問題 - 但正在尋求一些幫助。 有沒有辦法獲取與列公式中的條件匹配的行?
在下面顯示的示例中,應該能夠實現給定組的分組總和。 如果我想在此之上添加一個條件,讓我們說 on :height should be > 60 ,我該如何實現。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column("CondSum",Numeric,Continuous,Formula(Col Sum(:weight,:age)));在列公式之外,我相信這很容易並且可以實現。 但是,如果可能的話,我想通過列公式來實現這一點。
回复:獲取滿足列公式中條件的行該公式似乎僅在 Age 列更改時才被評估。但是,下面的公式似乎可以滿足您的需求
myheight = :height;
myage = :age;
Sum( :weight[Current Data Table() << get rows where( :age == myage & :height >= myheight )] );
回复:獲取滿足列公式中條件的行所以我猜這與
結果在內部緩存,以便多次評估有效
雖然不能肯定地說。如果你只是使用一個中間列,它似乎工作正常。
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 );
));回复:獲取滿足列公式中條件的行嗨,將比較作為 byVar 參數是個好主意:
Col Sum( :weight, :age, :height >= 60 )
我有興趣在將它與當前行進行比較的 byVar 參數中進行比較:
myheight = :height;
Col Sum( :weight, :age, :height >= myheight )
這不會按預期工作:計算顯示一組令人困惑的數字,然後如果我改變某人的身高,它們都會變為“1”。
有沒有辦法做到這一點?
(只是為了更好的參考框架,在我的實際表中,我試圖計算 colA 中的日期大於 colA 中的日期值以及 colB 中的日期小於 colB 中的日期值的行。)
回复:獲取滿足列公式中條件的行嗨,烏代,
實際上,您可以將條件鍵入為下一個參數。
Col Sum( :weight, :age, :height > 60 )
在這個 Big Class 示例中,乍一看可能不正確,因為 60 英寸以下和以上的 12 歲兒童的總和相同。它們恰好是相同的數額。
回复:獲取滿足列公式內條件的行使用條件作為非常酷的技巧通過...分組選項 :)
需要注意的是:
使用建議的代碼,每個條件
1):高度<=60
2) : 高度 > 60)
得到它自己的結果。
還有另一種變體,其中條件用於將聚合限制為一子集 - 結果寫入相應組的所有行。 就像這個表的最後一列一樣:

到達那裡的一種選擇:
使用帶有數據過濾器的表格/摘要(Jmp 17 中的新增功能)並將值合併回主表:
查看更多...
其他方法(具有各種速度)在中討論如何將 Col 最大公式與“where”條件一起使用。