<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />CIAO,
Sto usando JMP10.Sto cercando di creare uno script per eliminare righe di dati duplicate in una tabella di dati.Un esempio del mio tentativo è il seguente:
// Inizio.
// Crea una tabella dati.
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt <
subdt = dt << Sottoinsieme(Nome tabella di output("sottoinsieme"), Invisibile);
dt << Concatena(subdt, Aggiungi alla prima tabella);
Chiudi(subdt, Nessun salvataggio);
dt << Cancella Seleziona;
// Trova ed elimina le righe duplicate per bigClass.
icol = dt << Nuova colonna( "Indice", Numerico, Continuo, Formula( Sequenza( 1, N Riga( dt ), 1, 1 ) ) );
repcol = dt << Nuova colonna( "Ripeti dati",
Numerico,
Continuo,
Formula( If( :Indice == Col Minimo( :Indice, :nome, :età, :sesso, :altezza, :peso ), 1, 0 ) )
);
dt << Seleziona dove (come colonna (repcol) == 0);
dt << Elimina righe();
dt << Elimina colonne( {icol, repcol} );
// Trova ed elimina le righe duplicate per la tabella dati generica.
colnames = dt << Ottieni i nomi delle colonne();
icol = dt << Nuova colonna( "Indice", Numerico, Continuo, Formula( Sequenza( 1, N Riga( dt ), 1, 1 ) ) );
repcol = dt << Nuova colonna( "Ripeti dati",
Numerico,
Continuo,
Formula( If( :Index == Col Minimum( :Index, /* Inserisci qui i nomi dei col. */ ), 1, 0 ) )
);
dt << Seleziona dove (come colonna (repcol) == 0);
dt << Elimina righe();
dt << Elimina colonne( {icol, repcol} );
// FINE.
Il mio problema è che vorrei eseguire questo script su una tabella dati generica.Come posso inserire l'elenco dei miei nomi di colonna nella mia formula?Esiste un modo più intelligente per farlo?
Grazie!
È intelligente utilizzare Col Min() con una colonna indice per individuare i duplicati.
Di solito utilizzo Tabelle->Riepilogo per ottenere una tabella dati priva di duplicati. Raggruppa semplicemente per tutte le colonne che definirebbero un duplicato. Ciò ha l'ulteriore vantaggio di fornire una colonna (N righe) che indica quante righe duplicate erano presenti nella tabella originale.

-Jeff
Sono stato troppo veloce. La prima versione pubblicata fallirebbe per nomi di colonne complessi che richiedono il costrutto :Name("eg ∆X"). Ho modificato il codice sopra e ora dovrebbe funzionare in modo più generale.
Grazie MS!Molto intelligente.Dovrò ancora studiare esattamente come funziona.
Idea geniale usare Col Min() per trovare duplicati!
Di seguito è riportato un approccio alternativo basato sulla tua idea che sembra funzionare. È più semplice perché non sono necessarie colonne formula temporanee.
// Crea una tabella dati di esempio.
Aprire ( "$SAMPLE_DATA/Classe grande.jmp" ) << Concatenare ( Aprire ( "$SAMPLE_DATA/Classe grande.jmp" ) , Aggiungi alla prima tabella ) ;
// Elimina i duplicati dalla tabella generica
dt = Tabella dati corrente () ;
col_min = Analizzare ( "Col Min( Riga(), :Nome(\!"" || Elementi concatenati ( dt << ottenere i nomi delle colonne ( corda ) , "\!"), :Nome(\!"" ) || "\!"))" ) ;
duplicati = [] ;
Per ogni riga ( Se ( col_min != Riga () , duplicati |/= Riga () ) ) ;
dt << eliminare righe ( duplicati ) ;