Re: Col Median (e altri): aggiungere l'opzione "Dove" - Stato cambiato in: RiconosciutoCiao @hogi , Grazie per il tuo suggerimento! Abbiamo acquisito la tua richiesta e la prenderemo in considerazione.
Re: Col Median (e altri): aggiunta opzione "Dove" - Stato modificato in: IndagineRe: Col Median (e altri): aggiunta opzione "Dove" - Stato cambiato in: Ci piace! (in coda)@hogi questo viene esaminato attentamente mentre lavoriamo su modi per migliorare il modo in cui le clausole Where() vengono utilizzate in JMP.Grazie per il suggerimento!
Re: Col Median (e altri): aggiungere l'opzione "Dove".Grazie 
Col Median (e altri): aggiungi l'opzione "Dove"☐ nuova fantastica funzionalità
☑ potrebbe aiutare molti utenti!
☐ rimuove un "bug"
☐ bello da avere
☐ nessuno ne ha bisogno
#myTop10_2022
C'è una serie di post con domande su come limitare il Col ... aggregazione funzioni a un sottoinsieme specifico.
Calcola la media della colonna limitando le osservazioni utilizzate
JMP10: le funzioni Col Max() e Col Min() hanno restituito i dati dalla riga esclusa
Funzioni Col e stati di riga
Come si usa la formula Col Maximum con una condizione "where"
Escludi dati nella formula
Casi applicativi:
- escluso rows from the aggregation:
Col Max(if(not(excluded()), :weight,.),: sex)
or even shorter (if one doesn't need values in the excluded rows);
Col Max(:weight, :sex, :excluded())
- Benchmark some data with a reference data set (country A in Questo post)
:data / Col Maximum(if(:country="A", :data,.))
Come si può vedere negli esempi sopra, la soluzione più semplice è un'istruzione If all'interno dell'aggregazione Col xyz :
col Mean( if(:sex=="M", :weight,.), :age);
col Mean( if(not(excluded()), :weight,.), :age)
Il problema:
L'approccio è ESTREMAMENTE lento - se il sottoinsieme if -condition contiene un confronto di stringhe:
Come si usa la formula Col-Maximum con un-dove/M78599
Quindi il tempo aumenta in modo quadratico con il numero di righe e anche per piccoli set di dati con solo poche migliaia di voci il calcolo richiede pochi secondi .
Per set di dati con alcuni milioni di voci ci vorrebbero mesi (!!!) - ma verrebbe fermato da un timeout e comparirebbe un messaggio di errore. Non è bello!
Il mio desiderio:
correggere il bug
Ancora meglio:
Fornire un'opzione aggiuntiva per le aggregazioni Col xyz
- che risolve automaticamente il problema di temporizzazione: prima limita il set di dati, poi applica l'aggregazione (--> molto più veloce, anche se la fantastica accelerazione "col..." ha un bug)
- che semplificano le definizioni dei sottoinsiemi,
invece di (*), ti serve solo:
col Mean(:weight, :age, where(:sex=="M"))
col Mean(:weight, :age, where(not(excluded())))
esempi di tempistica, copiati da qui

versione corretta - in una versione precedente lo screenshot mostrava [ms] invece di [s]
altri desideri inviati da 
Automazione e scriptingAnalisi e modellazione dei dati di baseFusione e pulizia dei datiEsplorazione e visualizzazione dei datiPersonalizzazione di massaCondivisione e comunicazione dei risultatiRi: Col Median (e altri): aggiunta l'opzione "Dove".per il momento in cui(...) sarà disponibile in una futura versione di Jmp, è possibile accelerare l'aggregazione delle colonne per ordini di grandezza tramite la soluzione alternativa
modificare il tipo di dati in numerico oppure utilizzare una colonna formula numerica.
https://community.jmp.com/t5/Discussions/Tips-and-Tricks-best-practice-with-JMP-JSL/td-p/662686
Ri: Col Median (e altri): aggiunta l'opzione "Dove".Grazie, @SamGardner , @Sarah-Sylvestre , è ora disponibile in JMP18 
Prima di modificare lo stato in Consegnato, potresti verificare se l'utilizzo di Dove è come previsto in questo snippet?
Rispetto all'approccio originale è estremamente lento : (
dt = Open( "$SAMPLE_DATA/Airline Delays.jmp" );
Print("old aproach");
t0 = hptime();
New Column( "max - 1st of month",
Formula( Col Maximum( if(:Day of Month == 1 , :Arrival Delay,.), :Month) )
);
dt << run formulas();
show((hp time()-t0)/1000000); // 0.5s
Print("new aproach - with Where");
t0 = hptime();
New Column( "max - 1st of month",
Formula( Col Maximum( :Arrival Delay, :Month, Where( :Day of Month == 1 ) ) )
);
dt << run formulas();
show((hp time()-t0)/1000000); // 140s
Ri: Col Median (e altri): aggiunta l'opzione "Dove".Print("new aproach - with Where, semi-bugfix");
t0 = hptime();
myWhere = Where( :Day of Month == 1 ) ;
Eval (Eval Expr(New Column( "max - 1st of month",
Formula( Col Maximum( :Arrival Delay, :Month, Expr(myWhere) )
))));
dt << run formulas();
show((hp time()-t0)/1000000); // 40s - better but still way too slow ...Re: Col Median (e altri): aggiungi l'opzione "Dove"Ah, non funziona ancora : (
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "max - 1st of month",
Formula( Col Minimum( :weight, :sex, Where( :age ==17 ) ) )
);