回复:立即计算自定义列公式或缓存行之间的值的选项或函数此选项或函数可以轻松创建自定义列转换来解决以下描述的问题@hogi在后来的回复之一中计数唯一
回复:立即计算自定义列公式或缓存行之间的值的选项或函数对此问题的调查正在进行中,如果我们找到解决方案,我们会向您通报最新情况。
回复:立即计算自定义列公式或缓存行之间的值的选项或函数另一个例子:编写自定义平滑函数,例如 Savitzky-Golay 过滤器,忽略排除的行。当第一行计算时,这可以一次有效地计算整个列,我想在第一次计算时缓存整个列的值,然后只返回每行中预先计算的结果,而不是重新计算它每次。
回复:立即计算自定义列公式或缓存行之间的值的选项或函数是的,我也注意到了这一点,但确定你是否那样使用它。 对于我想要的东西来说,它似乎过于认真地对待“恒定”部分。 我们必须进行调查,但它可能需要新的功能来实现依赖性/重新运行意识。
对于像您这样的情况,我通常使公式依赖于表变量,并每次通过循环更新表变量以获得新的随机值。
回复:立即计算自定义列公式或缓存行之间的值的选项或函数你好@XanGregg ,
我可能会遗漏一些东西,但当再次运行表公式时,我似乎无法让 As Constant 重新评估。只要表打开,它似乎(可能是正确的)缓存其值。 这是一个更完整的示例,它使用全局变量解决了这个问题。
查看更多... 回复:立即计算自定义列公式或缓存行之间的值的选项或函数你见过 As Constant(x) 函数吗? 这应该处理请求的唯一一次部分。
Local(
{startofweek = As Constant(
Random Uniform(
Col Min( :Timestamp ),
Col Max( :Timestamp ) - In Days( 7 )
)
)},
If( :timestamp > startofweek & :timestamp < startofweek + In Days( 7 ),
1,
0
)
)回复:立即计算自定义列公式或缓存行之间的值的选项或函数感谢您提供的示例和附加信息@ih 。 将状态更改为调查。
回复:立即评估自定义列公式或缓存行之间的值的选项或函数 - 状态更改为:正在调查回复:立即计算自定义列公式或缓存行之间的值的选项或函数这里有一些潜在的用例,我知道还有其他一些我现在忘记了。对于小型表,或者通过使用多个列或表变量,可以轻松解决其中的许多问题,但提供列上下文变量将使它们变得更容易。
- 在列公式中使用随机值,以便可以在模拟中进行交换
// this value should be cached and re-used for all rows,
// but it should change each time the column is recalculated
startofweek = Random Uniform(
Col Min( :Timestamp ),
Col Max( :Timestamp ) - In Days( 7 )
);
If( :Timestamp > startofweek & :Timestamp < startofweek + In Days( 7 ),
1,
0
);
- 自最后一个不合规格样本开始以来的行数。
- 距离本次活动结束时间
- 该产品代码的最后 10 个样本的移动平均值
回复:立即计算自定义列公式或缓存行之间的值的选项或函数我认为这篇文章可能会说明这个问题创建具有 byVar 的统计自定义(公式)函数
回复:立即计算自定义列公式或缓存行之间的值的选项或函数 - 状态更改为:需要信息@ih您能否分享一个数据表示例来说明您所描述的问题?
回复:立即计算自定义列公式或缓存行之间的值的选项或函数@hogi - 您断章取义地理解了我在技术支持案例中的回答。 我指的是自定义变换因为这就是你问的。
我一般没有说任何关于自定义函数的事情。
在公式编辑器本身内,通常有多种方法将列引用传递给自定义函数,例如将其包装在 Expr() 中。 或者 JMP 识别应该使用列的方法,例如在消息发送中。
回复:立即计算自定义列公式或缓存行之间的值的选项或函数哎哟 - 答案更令人悲伤:*)

*) TS-00063463
回复:立即计算自定义列公式或缓存行之间的值的选项或函数
@ih写道:
该公式还需要访问整个列,而不仅仅是当前行,因此列引用应该在不计算的情况下传递。
@杰夫·珀金森至于TS-00063463,我认为悲伤的答案是:还没有。
因此,除了速度之外,目前很多任务还无法通过自定义函数来实现。
地位:调查中-> 听起来很有希望:)
我希望有一种方法可以调整自定义函数以接受列引用作为下一版本中的参数......
https://community.jmp.com/t5/Discussions/Column-reference-in-custom-function/mp/265085/highlight/true#M51645
回复:用于一次性评估自定义列公式或在行之间缓存值的选项或函数具体来说,我需要通过以下方式添加自定义函数的此功能:
添加自定义函数(新建自定义函数())
自定义变换只是这个奇妙框架的应用之一。
编辑:
例如
Names Default To Here( 1 );
Add Custom Functions(
New Custom Function(
"COL",
"Median",
Function( {value, byGroup},
Col Median( value, byGroup )
),
<
<FORMULA category=""></FORMULA>
<P><A href="https://community.jmp.com/t5/Discussions/Fast-Way-to-calculate-quot-nested-quot-Col-aggregations-like-MAD/m-p/887467/highlight/true#M104961" target="_blank">https://community.jmp.com/t5/Discussions/Fast-Way-to-calculate-quot-nested-quot-Col-aggregations-like-MAD/mp/887467/highlight/true#M104961</A> </P>
用于立即计算自定义列公式或缓存行之间的值的选项或函数一些内置列公式(例如 Col Mean())非常快,因为它们只计算一次昂贵的值,然后为每行返回或修改它们。对于自定义公式,这很难实现,因为每一行都是单独计算的。有时使用单独的列来存储中间值可以加快速度(例如存储满足特定条件的行索引,而不是每行重新计算它们),但这会变得混乱且难以理解。 如果存在列上下文的某种概念,使得一行的计算可以访问前一行中计算的中间值,那么脚本可以一次计算所有行的结果,然后快速返回它们并将中间结果传递给下一行排。 该公式还需要访问整个列,而不仅仅是当前行,因此列引用应该在不计算的情况下传递。
自动化和脚本编写回复:立即计算自定义列公式或缓存行之间的值的选项或函数解决方案的一半 - 或者说 1/4:

是一个非常有用的功能,我不久前从 提供的解决方案中了解到@tx尼尔森:
https://community.jmp.com/t5/JMP-Wish-List/Option-or-function-to-evaluate-a-custom-column-formula-at-once/idc-p/695311/highlight/true# M5011
如果您知道一次性部分会总是给出相同的结果,你可以考虑使用作为常数自定义函数。
(以下代码改编自https://community.jmp.com/t5/Discussions/Differentiate- Between-entire-column-and-current-row/mp/677710/highlight/true#M86405经过@jthi )
有趣的是:它只会被评估一次 - 再也不会(!)
一般来说,这将是“曾经”的一个过于极端的版本:)
任何改变行为的可能性作为常数在自定义公式中?
例如每次运行它行()==1?
Names Default To Here(1);
row_count = 10;
dt = New Table("test",
Add Rows(row_count),
New Column("Die X", set each value(row())),
New Column("Die Y", set each value(Random Integer(1, row_count * 2)))
);
dt << New Column("Formula As Constant", Numeric, Nominal, Formula(
As Constant(print("direct","");x_m = :Die X << get values);
Contains(x_m, :Die Y) > 0;
));
Add Custom Functions(
New Custom Function(
"test",
"myFunc",
Function( {},
As Constant(print("custom","");x_m2 = :Die X << get values);
Contains(x_m2, :Die Y) > 0;
)));
dt << New Column("Formula via Custom Formula", Numeric, Nominal, Formula(test:myFunc()));
回复:选项或函数用于一次性评估自定义列公式,或在行之间缓存值 - 状态更改为:已确认回复:用于一次性评估自定义列公式或在行之间缓存值的选项或函数使用JMP19,将会有一些改进:
例如,即使没有中间的虚拟列,也可以更快地计算MAD 列()数量级:
计算“嵌套”Col...聚合的快速方法 - 类似 MAD
回复:用于一次性评估自定义列公式或在行之间缓存值的选项或函数这适用于在公式编辑器中手动创建的自定义函数类型 - 并且对于通过Function() 创建的自定义函数有一个技巧。
不包含通过添加自定义函数(新自定义函数())创建的“自定义函数”。