ColumnRank per gruppo?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao,
C'è un modo per costruire una formula equivalente a «ColumnRank by...» (gruppo). Normalmente utilizzo la piattaforma di distribuzione (con l'opzione «per gruppo») e salvo i ranghi a tale scopo in una colonna statica. Ma questa volta ho bisogno di una colonna dinamica (calcolata).
Grazie,
Claudio
Ri: ColumnRank per gruppo?Ciao a tutti,
La funzione Col Rank ora supporta le variabili BY come originariamente richiesto. Sembra che il supporto completo sia stato aggiunto nel periodo di tempo di JMP 13, quindi se stai utilizzando quella versione o una più recente, dovresti essere in grado di farlo.
La Guida in linea di JMP fornisce alcuni dettagli in più e opzioni di spareggio:
https://www.jmp.com/support/help/en/15.1/#page/jmp/statistical-functions-2.shtml?os=win&source=application#ww2752649
So che questo è un thread più vecchio, ma volevo che queste informazioni fossero disponibili per chiunque altro potesse cercarle.
Saluti!
Audrey
Ri: ColumnRank per gruppo?Grazie Ron.
Infine, ho scelto di modificare lo script di aggiornamento originale. È una procedura in 3 fasi:
- Il primo passaggio è l'aggiornamento originale (origine dati ODBC) che sta creando una nuova tabella (a causa delle colonne hard code);
- Quindi una seconda istruzione di script sta aggiornando la mia tabella principale con i dati di questa nuova tabella;
- L'ultimo passaggio è la chiusura della nuova tabella.
In questo modo posso creare tutte le nuove colonne di hard code di cui ho bisogno (lo script non avrà bisogno di alcuna correzione).
Claudio
Ri: ColumnRank per gruppo?Ciao claude.bellavance ,
se si verifica un problema con un aggiornamento, tutto ciò che devi fare è eliminare le colonne hardcoded appena prima dell'aggiornamento e reintrodurle subito dopo.
come:
eliminare le colonne hardcoded;
aggiornare;
ricalcolare le colonne hardcoded;
migliore,
Ron
Ri: ColumnRank per gruppo?Grazie mille Ron. È un modo ingegnoso per risolvere il problema.
Sfortunatamente, non posso usare lo script perché devo passare attraverso una colonna calcolata. Infatti, se aggiungo colonne con dati concreti, l'aggiornamento alla mia tabella con il mio database (tramite DNS/ODBC) creerà una nuova tabella invece di sostituire semplicemente i dati.
Claudio
Ri: ColumnRank per gruppo?Ciao claude.bellavance
Sono anche insoddisfatto dell'idea di " I legami sono rotti arbitrariamente" . dovrebbe esserci almeno un'opzione per cambiarlo in modo che i legami ottengano lo stesso rango come accadrebbe in una normale variabile ordinale.
Ho un altro modo per "classificare" senza ordinare la tabella: nel mio caso l'ordinamento è una seccatura. dà pari valore ai vincoli.
migliore,
Ron
I nomi predefiniti sono qui ( 1 ) ;
// definire l'origine dati
dt = Aprire ( "$SAMPLE_DATA/Classe grande.jmp" ) ;
// aggiunge una colonna per il rango
dt << Nuova Colonna ( "Classifica" , numerico , ordinale ) ;
//// opzione 1: classifica per colonna
// estrae l'elenco dei livelli delle variabili
byvarlist = matrice associativa ( dt : età ) << prendi le chiavi ;
// crea classifiche separate di altezza per ogni fascia di età
per ( ib = 1 , ib <= articoli ( byvarlist ) , ib ++,
eval ( analizzare ( "lista altezza" || char ( byvarlist [ ib ]) || " = matrice associativa( " || char ( dt : altezza [ dt << ottenere righe dove ( : età == byvarlist [ ib ])]) || " ) << prendi le chiavi" )) ;
) ;
per ( circuito integrato = 1 , circuito integrato <= nrow ( dt ) , circuito integrato ++,
: Classifica [ circuito integrato ] = eval ( analizzare ( "loc( elenco altezze " || char ( dt : età [ circuito integrato ] ) || " ," || char ( dt : altezza [ circuito integrato ]) || " ) " )) ;
) ;
// vedere se ha funzionato
dt << Ordinare (
Di ( : età , : altezza ) ,
Ordine ( Ascendente , Ascendente )
) ;
////
//// Opzione 2: Rango (senza colonna per)
// ottiene i valori univoci per l'altezza come elenco
altezza = matrice associativa ( dt : altezza ) << prendi le chiavi ;
Per ( io = 1 , io <= N righe ( dt ) , io ++,
dt : Classifica [ io ] = Loc ( altezza , : altezza [ io ] ) ;
) ;
// vedere se ha funzionato
dt << Ordinare (
Di ( : altezza ) ,
Ordine ( Ascendente )
) ;
Ri: ColumnRank per gruppo?Ciao Jerry,
Nessun problema. Sono felice di vedere che un giorno i miei desideri si avvereranno!
Grazie mille ancora.
Claudio
Ri: ColumnRank per gruppo?Ci scusiamo per la confusione, a quanto pare non stavo prestando attenzione a quale versione fosse attiva sul mio sistema quando stavo guardando questo. Di conseguenza, si ottiene un'anteprima "non autorizzata" delle funzionalità pianificate per una versione "futura" di JMP.
Ri: ColumnRank per gruppo?Ciao MS,
Bene, questo è molto interessante soluzione alternativa. È aperto per me a completamente nuova area (Eval, Formula, ecc.).
Incrocio le dita per una futura versione di JMP con questa nuova funzione "ColRank by…".
Grazie mille per aver dedicato del tempo a rispondere alla mia domanda.
Claudio
Ri: ColumnRank per gruppo?Temo che gli argomenti opzionali per Col Rank() non siano supportati dall'attuale versione di JMP.
Non ho una buona soluzione alternativa che funzionerebbe in modo veramente dinamico. La formula della colonna nell'esempio seguente dovrebbe funzionare, ma solo se la variabile è ordinata all'interno di gruppi.
dt = Aprire ( "$SAMPLE_DATA/Classe grande.jmp" ) ;
dt << ordinare ( di ( : età , peso ) , Sostituisci tabella ( 1 )) ;
F = Espr (
Valutazione ( Espr ( Numero Col ( : peso , Riga () <= Espr ( Riga ()) ,: età )))
) ;
dt << Nuova Colonna ( "Classifica di peso per età" , numerico , formula ( Nome Espr ( F ))) ;
Ri: ColumnRank per gruppo?Ciao Jerry,
Puoi spiegare meglio per favore. Il manuale è molto minimalista su questo terzo argomento.
Colonnello Rango
Classifica il valore di ogni riga, da 1 per il valore più basso al numero di non ‐ colonne mancanti per il valore più alto. I legami sono rotti arbitrariamente .
Non capisco cosa possa significare e come usarlo.
Grazie per l'aiuto!
Claudio
Ri: ColumnRank per gruppo?Ciao Claudio,
La funzione Col Rank(column, ) fa quello che stai cercando. L'impostazione predefinita per rompere i pareggi è l'ordine delle righe, ma c'è un terzo argomento facoltativo che consente alcune altre scelte. Spero questo sia di aiuto.
-Jerry