获取满足列公式中条件的行全部,
可能是一个简单的问题 - 但正在寻求一些帮助。 有没有办法获取与列公式中的条件匹配的行?
在下面显示的示例中,应该能够实现给定组的分组总和。 如果我想在此之上添加一个条件,让我们说 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”条件一起使用。