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