Élimination des lignes en double (en conservant le premier doublon)Je sais que cela a déjà été discuté, mais je recherche des suggestions pour ma situation particulière. J'ai une très grande table de données (~ 50 colonnes x plus de 50 000 lignes). Je dois vérifier les "lignes en double", où dupliquer signifie que les lignes correspondent dans trois colonnes (par exemple ColA, ColB et ColC). Lorsqu'il existe des doublons, je dois tout supprimer sauf la première des lignes correspondantes.
Idéalement, j'aimerais le faire avec un script car j'ai fréquemment besoin de réextraire et de réanalyser la table mise à jour. Je pense que je peux utiliser un tableau récapitulatif pour vous aider (au moins il identifiera et sélectionnera les lignes en double). Cependant, à partir de là, je ne sais pas comment automatiser le déplacement dans chaque ensemble de lignes « correspondantes » et supprimer toutes sauf la première.Re : Élimination des lignes en double (en conservant le premier doublon)C'est super!
En attendant (dans JMP 13), cela devrait être équivalent
// Keep first instance of duplicates only
dt << select where(Col Min(Row(), :a, :b, :c) < Row()) << delete rows;
Re : Élimination des lignes en double (en conservant le premier doublon)JMP 14 dispose d'une nouvelle commande "Sélectionner les lignes en double" dans le menu Lignes, vous pouvez donc le faire directement sans avoir à effectuer de jointure.
dt << select duplicate rows(match(:a, :b, :c));
dt << delete rows;
Élimination des lignes en double (en conservant le premier doublon)Merci, cela a très bien fonctionné !Voici mon code pour la version 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);
Re : Élimination des lignes en double (en conservant le premier doublon)J'utiliserais le résumé sur les 3 colonnes correspondantes. Joignez ensuite le tableau récapitulatif à la table d'origine, faites correspondre les 3 mêmes colonnes, avec l'option de suppression des doublons cochée, et sélectionnez uniquement les colonnes pertinentes que vous souhaitez pour la table de sortie.Re : Élimination des lignes en double (en conservant le premier doublon)Puis-je savoir si je souhaite conserver le dernier (et non le premier) des doublons ?Comment changer le script ? Merci.
Re : Élimination des lignes en double (en conservant le premier doublon)Voici une variante de @MS script qui devrait faire ce que tu veux
dt << select where(Col Max(Row(), :a,:b, :c) > Row()) << delete rows;
Ré: Élimination des lignes en double (conservation du premier doublon)Super ! ça marche. Merci, c'est ce dont j'avais besoin.
Cordialement,Chily