Suppression d'une ligne en fonction de la présence de mots spécifiques dans une celluleBonjour à tous ! Je pense que cela pourrait être une situation courante pour de nombreuses personnes travaillant avec des fichiers de données provenant de divers instruments. Mes ensembles de données sont dérivés de l'assemblage de plusieurs fichiers de sortie à partir d'un instrument spécifique. Outre les lignes de données utiles, il existe un certain nombre de lignes au-dessus de chaque fichier de sortie qui spécifient la recette, le fichier et d'autres, généralement, ces informations se trouvent dans la colonne 1. Pour le traitement des données, je n'ai pas besoin de ces informations, je souhaite donc supprimer les lignes inutiles contenant les mots ci-dessus Recette, Fichier, etc. dans les cellules de la colonne 1. Notez qu'il peut y avoir d'autres mots dans les mêmes cellules, par exemple : « Nom de la recette de gaufrette » ou « Fichier du groupe d'étapes », etc. J'ai essayé un certain nombre de permutations sur ce qui suit, mais j'obtiens toujours un message d'erreur indiquant : « Send attend des objets scriptables dans l'accès à l'évaluation de « Send », etc. Merci beaucoup d'avance !
dt_new2 << obtenir les lignes où (contient (:Column 1, "Recipe"));
dt_new2 << supprimer les lignes ;
Attendre(1);
dt_new2 << obtenir les lignes où (contient (:Column 1, "File"));
dt_new2 << supprimer les lignes ;
Attendre(1)
Automatisation et scriptsFusion et nettoyage des donnéesRé: Supprimer une ligne en fonction de la présence de mots spécifiques dans une celluleEssaye ça
Names Default To Here( 1 );
dt_new2 = Current Data Table();
dt_new2 << select where( Contains( :Column 1, "Recipe" ) );
dt_new2 << delete rows;
Wait( 0 );
dt_new2 << select where( Contains( :Column 1, "File" ) );
dt_new2 << delete rows;
L'index des scripts
Aide=>Index des scripts
est une excellente source de syntaxe d'instructions et d'exemples.
Je vous conseille également de prendre le temps de lire le Guide de script qui se trouve dans l'aide JMP
Ré: Supprimer une ligne en fonction de la présence de mots spécifiques dans une celluleSi vous souhaitez simplement utiliser << Supprimer les lignes sans aucun argument, vous devez sélectionner des lignes (comme Jim l'a montré). Une autre option consiste à collecter vos lignes dans une variable et à l'utiliser (ma méthode préférée car elle évite la sélection de lignes « inutiles », mais la sélection est plus visuelle si vous souhaitez déboguer)
Names Default To Here(1);
rows_to_delete = dt_new2 << get rows where(Contains(:Column 1, "Recipe"));
dt_new2 << delete rows(rows_to_delete);
rows_to_delete = dt_new2 << get rows where(Contains(:Column 1, "File"));
dt_new2 << delete rows(rows_to_delete);
Ce comportement n'est pas documenté dans l'index des scripts,

mais il peut être trouvé dans JSL Syntax Reference Data Table Messages (jmp.com) et Scripting Guide Delete Rows (jmp.com) (recherchez Delete Rows dans Script Editor et appuyez sur Topic Help)
Ré: Supprimer une ligne en fonction de la présence de mots spécifiques dans une celluleBonjour, txnelson, merci pour votre réponse ! Comme je l'ai dit, j'ai essayé un tas de commandes liées, notamment select where + contains, mais sans l'instruction Names default to here en haut, cette approche ne fonctionnait pas auparavant. La routine fonctionne pour moi maintenant, merci beaucoup pour votre contribution. À la vôtre !
Ré: Supprimer une ligne en fonction de la présence de mots spécifiques dans une celluleBonjour jthi, merci pour votre réponse, je l'apprécie. Je me rappelle toujours de m'appuyer davantage sur les variables, mais malheureusement, je ne le fais que lorsqu'il n'y a pas d'autres options. Une excellente suggestion, je suis sûr qu'elle sera utile à beaucoup d'autres. Santé !
Ré: Supprimer une ligne en fonction de la présence de mots spécifiques dans une celluleVous pouvez également le faire sans variables, mais je ne le suggérerais pas car c'est beaucoup plus difficile à lire et plus difficile à déboguer en cas de problème.
Names Default To Here(1);
dt_new2 << delete rows(dt_new2 << get rows where(Contains(:Column 1, "Recipe")));
dt_new2 << delete rows(dt_new2 << get rows where(Contains(:Column 1, "File")));