È interessante che sia possibile utilizzare funzioni personalizzate e parte di formule personalizzate nell'editor delle formule.
Con il comando Trasforma categoria, il
New Custom Function( "myNamespace", "Add Ten", Function( {x, y = 10}, x + y ), << Transform Category( "Custom" ));da https://www.jmp.com/support/help/en/16.2/#page/jmp/create-custom-functions-transforms-and-formats.shtml
verrà visualizzato facendo clic con il pulsante destro del mouse sul menu Nuova colonna formula e produrrà una colonna con formula

Ho appena iniziato con @txnelson l'approccio di
https://community.jmp.com/t5/Discussions/Formula-for-Number-of-Unique-Categories-in-Column/mp/55284/highlight/true#M31262
per generare una colonna in Conte Unico valori - ma invece di digitare la formula, volevo utilizzare una funzione personalizzata.
La colonna formula generata manualmente funziona, ma la colonna che utilizza la funzione personalizzata conta unico no.
Fallisce con il messaggio di errore

Sembra che x in di() l'espressione non viene sostituita con il nome della colonna.
Quindi, usa Valutazione(Sostituto() per risolvere il problema?
... ma come?
Con
Eval(Substitute(Expr(Summarize( values = by( _col_ ) )),Expr(_col_),Name Expr(x) ));
ottengo

- perché in una formula di colonna :x viene trattato come :x[riga()]. Argh...
In questo senso, inizio a chiedermi perché funziona:

[NB: la linea rossa a zig-zag indica semplicemente questo all'utente stampa in una formula di colonna non è una buona idea]
perché Jmp sa che deve inviare ottenere valori alla COLONNA :sesso e e non a :sesso[riga()].
E perché ritorna effettivamente :sesso[riga()] nella seconda riga - e non nella colonna :sesso ?
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>
Ciao @hogi ,
Non sono sicuro che questo sia un approccio intelligente, ma il seguente script funziona. Ho usato la funzione di inserimento valutazione. Spero possa essere d'aiuto.
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>hm, purtroppo non funziona:

produce il messaggio di errore:

Quindi, lo stesso di come con
Substitute (..., Expr(_col_),Name Expr(x))
Immagino sia perché deve essere una chiamata di funzione per farlo funzionare
custom:count unique( "sex" )
invece se
custom:count unique( :sex )
Ho appena trovato una versione precedente (2018) della stessa domanda:
Riferimento alla colonna nella funzione personalizzata
La risposta abbastanza definita dal supporto Jmp TS-00063463
