自定义函数 - 如何引用列很酷的是,可以在公式编辑器中使用自定义函数以及自定义公式的一部分。
使用变换类别命令,
New Custom Function( "myNamespace", "Add Ten", Function( {x, y = 10}, x + y ), << Transform Category( "Custom" ));从https://www.jmp.com/support/help/en/16.2/#page/jmp/create-custom-functions-transforms-and-formats.shtml
将显示在右键单击“新建公式列”菜单中 - 并生成一个包含公式的列

我刚开始@tx尼尔森的方法
https://community.jmp.com/t5/Discussions/Formula-for-Number-of-Unique-Categories-in-Column/mp/55284/highlight/true#M31262
生成一列计数唯一值 - 但我不想输入公式,而是想使用自定义函数。
手动生成的公式列有效,但使用自定义函数的列计数唯一没有。
它失败并显示错误消息

似乎 x 在经过()表达式不替换为列名。
所以,使用评估(替换()解决问题?
……但是怎么办呢?
和
Eval(Substitute(Expr(Summarize( values = by( _col_ ) )),Expr(_col_),Name Expr(x) ));
我明白了

- 因为在列公式中 :x 被视为 :x[row()]。 啊啊……
沿着这条线,我开始想知道为什么会这样:

[注意:红色锯齿线只是告诉用户打印在列公式中不是一个好主意]
为什么 Jmp 知道它必须发送获取值到专栏:性别并且不:性别[行()]。
为什么它实际上会返回:性别[行()]在第二行 - 而不是列:性别?
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Add Custom Functions(
New Custom Function(
"custom",
"count unique",
Function( {x},
As Constant( Summarize( values = by( x ) ) );
N Items( values );
),
<<TRANSFORM category=""></TRANSFORM>
自动化和脚本编写回复:自定义函数 - 如何引用列你好@hogi ,
我不确定这是否是一个聪明的方法,但以下脚本有效。 我使用了 eval 插入函数。 我希望它有帮助。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Add Custom Functions(
New Custom Function(
"custom",
"count unique",
Function( {x},
Eval( Parse( Eval Insert( "As Constant( Summarize( values = by( :^x^ ) ) )" ) ) );
N Items( values );
),
<<TRANSFORM category=""></TRANSFORM>回复:自定义函数 - 如何引用列嗯,不幸的是,它不起作用:

产生错误消息:

所以,就像一样
Substitute (..., Expr(_col_),Name Expr(x))
我想这是因为要使其工作的函数调用必须是
custom:count unique( "sex" )
相反,如果
custom:count unique( :sex )
回复:自定义函数 - 如何引用列我刚刚找到了同一问题的早期(2018)版本:
自定义函数中的列引用
回复:自定义函数 - 如何引用列Jmp 支持 TS-00063463 非常明确的答复
