Sélection de lignes en double dans une table de donnéesJe suis sûr que cela a déjà dû être abordé, mais je ne le trouve pas sur le forum, donc je m'excuse si la réponse est d'une évidence aveuglante.
J'ai une grande table de données qui, je le sais, contient des lignes en double. Ce que je veux faire, c'est sélectionner facilement ces doublons et les supprimer ou les exclure d'une analyse plus approfondie. Existe-t-il un script capable de faire cela dans les versions 8 et 9 de JMP ?Re : Sélection de lignes en double dans une table de donnéesJetez un oeil à "sélectionner les lignes en double" dans l'index des scripts
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Select duplicate rows( Match( :age, :height ) );
Re : Sélection de lignes en double dans une table de donnéesMerci! J'ai trouvé cela très rapide et utile pour gérer les doublonsRe : Sélection de lignes en double dans une table de donnéesC'est la méthode que j'utilise pour trouver des doublons complets. Une autre chose que vous souhaiterez peut-être faire est de déverrouiller les colonnes du tableau récapitulatif.
Voici le script pour faire cela.
dt = current data table();
colList=dt<
show(collist);
for (i=1,i<=nitems(collist),i++,
collist<< lock(0);
);
Re : Sélection de lignes en double dans une table de donnéesVoici un script général qui fait ce que j'ai décrit ci-dessus. S'applique à n'importe quelle table car le numéro de colonne et les noms n'ont pas besoin d'être spécifiés.
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 ) );
Le script remplit Group(column1, column2,...) en supprimant les accolades d'une liste de colonnes. Quelqu'un connaît-il une manière plus simple et moins compliquée d'utiliser une variable de liste de colonnes comme argument dans Summary() et des fonctions similaires ?
Si les doublons sont définis par un sous-ensemble de colonnes plutôt que par toutes les colonnes, une solution serait de remplacer « obtenir les noms de colonnes » par « obtenir les colonnes sélectionnées » dans le script ci-dessus. Cependant, les colonnes doivent ensuite être d'abord sélectionnées manuellement dans la table de données et la table récapitulative mise à jour avec la table d'origine pour restaurer les colonnes restantes.
Re : Sélection de lignes en double dans une table de donnéesSi des lignes entières sont identiques pour les doublons, vous pouvez utiliser la commande summary de la commande tables. Ajoutez toutes les colonnes à la case "Groupe" et appuyez sur ok.
Cela devrait vous donner un tableau sans doublons. Les seules différences sont que le tableau contient une nouvelle colonne "N Lignes" et que le tri a peut-être changé.
Sous le triangle rouge sous « Source » dans le panneau de gauche, vous pouvez choisir de copier le script et de le coller dans une nouvelle fenêtre de script si vous souhaitez répéter cette opération avec d'autres tables (avec le même ensemble de colonnes).
Pour supprimer la colonne N Lignes, vous pouvez ajouter la ligne
Table de données actuelle () << Supprimer la colonne (N lignes)
au scénario.Re : Sélection de lignes en double dans une table de donnéesPierre,
désolé pour le manque de clarté du message.
Dans l'exemple que je regarde, j'ai 51 lignes et 19 colonnes de données de caractères et numériques, je le classe comme un doublon lorsque toutes les valeurs de colonne sont les mêmes qu'une autre ligne (numérique ou caractère).
Je ne connais rien au JSL, j'ai donc essayé de simplement copier et coller dans un nouveau script et j'ai reçu plusieurs messages disant que cela ne fonctionnait pas. Quelqu'un pourrait-il m'aider à le mettre dans le bon format ?
Script du lien précédent
dt << CurrentDataTable;
TotalRows = NRows(dt);
eqFlag = 1;
deleteFlag = 0;
For(i=1, i<TOTALROWS></TOTALROWS>
Re : Sélection de lignes en double dans une table de donnéesUne recherche rapide a révélé ce fil :
https://community.jmp.com/t5/Discussions/find-and-drop-duplicate-rows/mp/370#M370
Fondamentalement, vous pouvez utiliser la commande summary pour produire un tableau sans doublons.
Salutations,
Pierre
Re : Sélection de lignes en double dans une table de donnéesIl existe plusieurs manières, mais elles dépendent de vos données. Comment savoir qu'une ligne est un doublon ? Autrement dit, si une ligne est un doublon, toutes ses valeurs de colonne sont-elles identiques à celles d'une autre ligne ?
Existe-t-il une valeur de colonne (comme une clé ou un index) que vous pourriez utiliser pour détecter les doublons ? Ou devez-vous examiner la ligne entière ?
Donnez-nous encore un peu pour continuer...
Salutations,
Pierre