Riassumo spesso una colonna con una combinazione di altre colonne categoriali utilizzando una colonna formula. Per esempio nei dati del campione del detergente, potrei voler conoscere il conteggio medio per ciascuna combinazione di morbidezza e temperatura. Di seguito sono riportati tre metodi per eseguire questa operazione, quale utilizzo dipende dalla dimensione della tabella di dati e da chi è il mio pubblico. C'è un modo più semplice?
Escludo da un componente aggiuntivo che contiene una funzione personalizzata "Col Mean by Multiple Columns ()" a causa di problemi di portabilità.
Tabluate
Crea statistiche di riepilogo in una nuova tabella usando tabulate e poi unisci i risultati alla tabella di dati originale.
Pro: Facile da rendere statistiche di sintesi molto complesse.
Con: non attivo, è necessario aggiornare i dati se una colonna referenziata cambia durante un'analisi, nessun modo per gli utenti di seguire l'origine dei dati.
Formula binning
Creare una formula binning e quindi utilizzare il secondo argomento della funzione Col Mean () per refrence quel bin.
Pro: facile da configurare e relativamente facile da seguire per gli utenti.
Con: crea colonne aggiuntive che ingombrano la tabella di dati e non hanno alcuna utilità ad eccezione di questa formula, specialmente quando si creano molte colonne di riepilogo.
dt = Open( "$sample_data/Detergent.jmp" );
//binning formula
dt << New Column(
"Bin by Temp and Softness",
Character,
"Nominal",
Formula( :softness || "-" || :temperature )
);
//summary statistic
dt << New Column(
"Mean Count by Temp and Softness Binned",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Col Mean( :count, :Bin by Temp and Softness) )
);
Identifica i bin e calcola le statistiche riassuntive usando JSL all'interno di una formula
Identificare le righe simili nella tabella dei dati quindi calcolare la statistica riassuntiva su tali dati. Sospetto che JMP non memorizzi nella cache i risultati utilizzando questo metodo, quindi l'intera tabella viene rivalutata per ogni riga. In ogni caso è lento per le tabelle di dati di grandi dimensioni.
Pro: tonnellate di flessibilità
Contro: calcoli lenti, molto difficili da seguire per gli utenti.
//summary statistic by bin
dt << New Column(
"Mean Count by Temp and Softness Direct",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
matches = Function( {a, b},
out = {};
For( i = 1, i <= N Items( a ), i++,
found = "no";
For( j = 1, j <= N Items( b ), j++,
If( a[i] == b[j],
found = "yes"
)
);
If( found == "yes",
out = Insert( out, a[i] )
);
);
out;
);
soft = Loc( :softness << get values(), :softness );
temp = Loc( :temperature << get values(), :temperature );
Mean( (:count << get values())[matches( soft, temp )] );
)
);Fantastico, sono contento che aiuti! Avrei dovuto accennare che nelle ultime versioni di JMP (penso da JMP 11) puoi avere più parametri di colonna direttamente in ColMean (). Quindi, piuttosto che concatenare, potresti avere:
Col Mean( :count, :softness, :temperature )
Sono così abituato concatenando che lo faccio ancora. Le vecchie abitudini sono dure a morire 
Inoltre, in JMP 12 e on, con le formule istantanee nella tabella dati puoi selezionare quelle colonne nella tabella, fare clic con il pulsante destro del mouse su una delle intestazioni, selezionare Nuova colonna formula> Raggruppa per.

Quindi, selezionare la colonna conteggio, fare clic con il pulsante destro del mouse sull'intestazione, selezionare Nuova colonna formula> Aggrega> Media

Questo disegnerà automaticamente la formula per te; molto amichevole per i tuoi nuovi utenti.
Questo è perfetto, e così ovvio una volta che lo fai notare.
Grazie!
Ciao @ih ,
Mi trovo a fare proprio questa cosa abbastanza spesso. Un modo che funziona per me è usare una formula di colonna come Col Mean (: column, byvariable), e per il secondo parametro uso una concatenazione delle due colonne categoriali direttamente (piuttosto che creare eventuali colonne aggiuntive nella tabella). Per l'esempio di detersivo che hai citato questo sarebbe:
Col Mean( :count, :softness || :temperature )
Questo fa ciò che ti serve o c'è qualcos'altro che stai cercando?
@julian