Eliminazione delle righe duplicate (mantenendo il primo duplicato)So che se ne è già parlato, ma cerco suggerimenti per la mia situazione particolare. Ho una tabella dati molto grande (~ 50 colonne x 50.000+ righe). Devo verificare la presenza di "righe duplicate", dove duplicato significa che le righe corrispondono in tre colonne (ad esempio ColA, ColB e ColC). Quando esistono duplicati, devo eliminare tutti tranne la prima delle righe corrispondenti.
Idealmente, mi piacerebbe farlo con uno script poiché spesso ho bisogno di rieseguire e rianalizzare la tabella aggiornata. Sospetto di poter utilizzare una tabella di riepilogo per aiutarmi in questo (almeno identificherà e selezionerà le righe duplicate). Tuttavia, da lì non sono sicuro di come automatizzare lo spostamento attraverso ogni serie di righe "corrispondenti" ed eliminare tutte tranne la prima.Ri: Eliminazione delle righe duplicate (mantenendo il primo duplicato)È fantastico!
Nel frattempo (in JMP 13), questo dovrebbe essere equivalente
// Keep first instance of duplicates only
dt << select where(Col Min(Row(), :a, :b, :c) < Row()) << delete rows;
Ri: Eliminazione delle righe duplicate (mantenendo il primo duplicato)JMP 14 dispone di un nuovo comando "Seleziona righe duplicate" nel menu Righe, quindi puoi farlo direttamente senza dover eseguire un'unione.
dt << select duplicate rows(match(:a, :b, :c));
dt << delete rows;
Eliminazione delle righe duplicate (mantenendo il primo duplicato)Grazie, ha funzionato benissimo!Ecco il mio codice per la versione dello script:
// JMP script to Eliminate duplicate rows "matching Parent, Wafer, & Raw Number"
dt3 = Current Data Table();
dt2 = dt3 << Summary(
Group( :Parent, :Meas Wafer Id, :Raw Number )
);
dt = dt3 << Join(
With( dt2 ),
Update,
By Matching Columns(
:Parent = :Parent,
:Meas Wafer Id = :Meas Wafer Id,
:Raw Number = :Raw Number
),
Drop multiples( 1, 0 ),
Name( "Include non-matches" )(0, 0),
Preserve main table order( 1 ),
);
Close(dt2, no save);
Close(dt3, no save);
Ri: Eliminazione delle righe duplicate (mantenendo il primo duplicato)Vorrei utilizzare il riepilogo sulle 3 colonne corrispondenti. Quindi unisci la tabella di riepilogo alla tabella originale, abbina le stesse 3 colonne, con l'opzione Elimina duplicati selezionata e seleziona solo le colonne pertinenti che desideri per la tabella di output.Ri: Eliminazione delle righe duplicate (mantenendo il primo duplicato)Posso sapere se voglio conservare l'ultimo (non il primo) dei duplicati?Come cambiare la sceneggiatura? Grazie.
Ri: Eliminazione delle righe duplicate (mantenendo il primo duplicato)Ecco una variazione su @SM script che dovrebbe fare quello che vuoi
dt << select where(Col Max(Row(), :a,:b, :c) > Row()) << delete rows;
Re: Eliminazione delle righe duplicate (mantenendo il primo duplicato)Ottimo! Funziona. Grazie, è quello che mi serve.
Cordiali saluti, Chily