Selezione di righe duplicate in una tabella di datiSono sicuro che questo problema sia già stato affrontato in precedenza, ma non riesco a trovarlo sul forum, quindi mi scuso se la risposta è assolutamente ovvia.
Ho una tabella dati di grandi dimensioni che so che contiene righe duplicate. Quello che voglio fare è selezionare facilmente questi duplicati ed eliminarli o escluderli da ulteriori analisi. Esiste uno script che può farlo nelle versioni v8 e v9 di JMP?Ri: Selezione di righe duplicate in una tabella di datiDai un'occhiata a "seleziona righe duplicate" nell'indice degli script
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Select duplicate rows( Match( :age, :height ) );
Ri: Selezione di righe duplicate in una tabella di datiGrazie! L'ho trovato molto rapido e utile per gestire i duplicatiRi: Selezione di righe duplicate in una tabella di datiQuesto è il metodo che utilizzo per trovare duplicati completi. Un'altra cosa che potresti voler fare è sbloccare le colonne nella tabella di riepilogo.
Ecco lo script per farlo.
dt = current data table();
colList=dt<
show(collist);
for (i=1,i<=nitems(collist),i++,
collist<< lock(0);
);
Ri: Selezione di righe duplicate in una tabella di datiEcco uno script generale che fa ciò che ho descritto sopra. Si applica a qualsiasi tabella poiché non è necessario specificare il numero di colonna e i nomi.
dt = Current Data Table();
dt2 = Eval(
Parse(
Eval(
Expr(
"dt << Summary(group(" || Substitute(
Substitute( Char( dt << get column names() ), "}", "" ),
"{", ""
) || "))"
)
)
)
);
dt2 << delete column( Eval( N Col( dt ) + 1 ) );
Lo script popola Group(colonna1, colonna2,...) eliminando le parentesi graffe da un elenco di colonne. Qualcuno è a conoscenza di un modo più semplice e meno contorto per utilizzare una variabile di elenco di colonne come argomento in Summary() e funzioni simili?
Se i duplicati sono definiti da un sottoinsieme di colonne anziché da tutte le colonne, un modo sarebbe sostituire "ottieni nomi di colonne" con "ottieni colonne selezionate" nello script precedente. Tuttavia, le colonne devono prima essere selezionate manualmente nella tabella dati e la tabella di riepilogo aggiornata con la tabella originale per ripristinare le colonne rimanenti.
Ri: Selezione di righe duplicate in una tabella di datiSe intere righe sono identiche per i duplicati, puoi utilizzare il comando di riepilogo dal comando tabelle. Aggiungi tutte le colonne alla casella "Gruppo" e premi ok.
Questo dovrebbe darti una tabella senza duplicati. L'unica differenza è che la tabella contiene una nuova colonna "N righe" e che l'ordinamento potrebbe essere cambiato.
Sotto il triangolo rosso in "Sorgente" nel pannello di sinistra puoi scegliere di copiare lo script e incollarlo in una nuova finestra di script se desideri ripeterlo con altre tabelle (con lo stesso set di colonne).
Per eliminare la colonna N righe puoi aggiungere la riga
Tabella dati corrente() << Elimina colonna (N righe)
alla sceneggiatura.Ri: Selezione di righe duplicate in una tabella di datiPeter,
mi scuso per la poca chiarezza del post.
Nell'esempio che sto guardando ho 51 righe e 19 colonne di dati sia di caratteri che numerici, lo classifico come duplicato quando tutti i valori di colonna sono uguali a un'altra riga (numerica o carattere).
Non so nulla di JSL, quindi ho provato semplicemente a copiare e incollare in un nuovo script e ho ricevuto più messaggi che sostanzialmente dicevano che non funziona. Qualcuno potrebbe aiutarmi a inserirlo nel formato giusto?
Script dal collegamento precedente
dt << CurrentDataTable;
TotalRows = NRows(dt);
eqFlag = 1;
deleteFlag = 0;
For(i=1, i<TOTALROWS></TOTALROWS>
Ri: Selezione di righe duplicate in una tabella di datiUna rapida ricerca ha rivelato questo thread:
https://community.jmp.com/t5/Discussions/find-and-drop-duplicate-rows/mp/370#M370
Fondamentalmente puoi usare il comando summary per produrre una tabella priva di duplicati.
Saluti,
Peter
Ri: Selezione di righe duplicate in una tabella di datiEsistono diversi modi, ma dipendono dai tuoi dati. Come fai a sapere che una riga è un duplicato? Cioè, se una riga è duplicata, tutti i valori delle sue colonne sono uguali a quelli di un'altra riga?
Esiste un valore di colonna (come una chiave o un indice) che potresti utilizzare per rilevare i duplicati? Oppure devi guardare l'intera riga?
Datecene ancora un po' per andare avanti...
Saluti,
Peter