<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao a tutti,
Sto cercando alcuni consigli da parte degli utenti JMP più esperti per il seguente problema.
Ho spesso bisogno di lavorare con tabelle di dati che contengono fino a 4 righe per unità. Tuttavia, alcuni dei parametri di sistema vengono registrati solo per il primo enry di una singola unità, sebbene siano applicabili anche alle altre righe associate a tale unità.
Per poter analizzare e raggruppare i dati ho bisogno che questi parametri di sistema siano completati per tutte le file di un'unità.
Dato che non ho alcuna possibilità di modificare la registrazione dei dati nel database, devo occuparmi di questo dopo l'estrazione della base di dati prima di qualsiasi analisi.
Ho quindi creato una soluzione alternativa come mostrato di seguito.
Fornisce il risultato desiderato ma è molto lento e in realtà non è fattibile per le tabelle di dati con più di 1000 righe.
dt = Current Data Table ();
dt << Ordina (Per (: unità), Ordine (crescente), Sostituisci tabella);
: param_1 << Formula (per ogni riga (: param_1 [row () + 1] = (if (: unit [row ()] ==: unit [row () + 1],
: param_1 [row ()],: param_1 [row () + 1])),
),
Formula Eval
);
Sono sicuro che esiste un modo più efficiente ed elegante per risolvere questo problema, ma devo ammettere che le mie capacità sono molto limitate.
Apprezzo qualsiasi input da parte di utenti più esperti.
Grazie,
Lutz
Molte grazie. Testerà il codice per primo in ufficio oggi.
Testato il mio codice su una tabella di 40.000 righe e restituito in meno di un secondo.
Prova questo codice. Suppone che tu abbia una tabella a due colonne con una colonna chiamata Unit e l'altra chiamata Param_1. Non ho fatto alcun test delle prestazioni, ma questo potrebbe comprimere rapidamente il tuo tavolo. Imposta solo i valori, se necessario.
dt = Nuova tabella ( "Esempio di parametro unità" ,
Aggiungi righe ( 16 ) ,
Nuova colonna ( "Unità" ,
Personaggio ,
Nominale ,
Imposta valori (
{ "un" , "un" , "un" , "un" , "B" , "B" , "B" , "B" , "C" , "C" , "C" , "C" , "D" , "D" ,
"D" , "D" }
)
) ,
Nuova colonna ( "Param_1" ,
Numerico ,
Continuo ,
Formato ( "Migliore" , 12 ) ,
Imposta valori ( [ 32 , 32 , 32 , 32 , 25 , . , . , . , . , 14 , . , . , . , . , 13 , . ] )
)
) ;
// Ordina per unità e parametro, in modo che se ne mancano alcuni sono nelle posizioni 2, 3, 4 di un set
dt << Ordinare ( Di ( : unità , : PARAM_1 ) , Ordine ( Ascendente , discendente ) , Sostituisci tabella ) ;
// Ottieni i valori della prima riga
old_unit = dt : unità [ 1 ] ;
old_param = dt : PARAM_1 [ 1 ] ;
per ( io = 2 , io <= nrows ( dt ) , io ++,
una unità = dt : unità [ io ] ;
one_param = dt : PARAM_1 [ io ] ;
Se ( una unità == old_unit & manca ( one_param ) ,
dt : PARAM_1 [ io ] = old_param ;
) ;
Se ( una unità ! = old_unit ,
old_unit = una unità ;
old_param = dt : PARAM_1 [ io ] ;
) ;
) ;