Salut,
J'essaie de sélectionner toutes les lignes avec la valeur 1 dans la colonne Violation, d'extraire la valeur de la colonne Device, puis d'exclure toutes les lignes associées à ces appareils.Quelqu'un peut-il m'aider à trouver un script ?Merci!
Vous trouverez ci-dessous un script qui effectuera cette action
Names Default To Here(1);
dt = Current Data Table();
dt << Clear Row States;
violation_rows = dt << Get Rows Where(:Violation == 1);
violation_devices = Associative Array(dt[violation_rows, "Device"]) << get keys;
dt << Select Where(Contains(violation_devices, :Device)) << Exclude(1) << Clear Select;
- Obtenir les numéros de ligne où : Violation == 1
- Utilisez l'indice de table de données et le tableau associatif pour obtenir les appareils
- Sélectionnez des lignes avec ces appareils et excluez-les
Vous pouvez également le faire facilement de manière interactive (et cela sera enregistré par un journal amélioré):
- Créez un tableau récapitulatif avec Device comme groupe et Violation comme sous-groupe. Assurez-vous également que les tables sont liées
- Sélectionnez 0 valeurs parmi N(1) (indique où Validation == 1) puis faites un clic droit sur les lignes pour inverser la sélection
- Vous avez maintenant les appareils sélectionnés dans votre tableau principal
- Vous pouvez maintenant exclure ces lignes
JMP vous créera un script comme celui-ci
// Open Data Table: Sample(1).jmp
// → Data Table("Sample(1)")
Open("$DOWNLOADS/Sample(1).jmp");
// Data table summary
// → Data Table("Sample(1) By (Device)")
Data Table("Sample(1)") << Summary(Group(:Device), N, Subgroup(:Violation), Freq("None"), Weight("None"));
// Select matching cells
Data Table("Sample(1) By (Device)") << Select Where(:"N(1)"n == 0);
// Invert current selection
Data Table("Sample(1) By (Device)") << Invert Row Selection;
// Toggle selected rows' exclude state
Data Table("Sample(1) By (Device)") << Select Where(:"N(1)"n == 0) << Invert Row Selection << Exclude;
// Close Data Table: Sample(1) By (Device)
Close(Data Table("Sample(1) By (Device)"), NoSave);
et avec quelques petites modifications, ce sera un script assez robuste qui sera utilisé à l'avenir (utilisez des variables au lieu de noms de table, démarrez-le avec Names Default To Here (1)... pour mentionner quelques changements).
Merci pour la réponse rapide. Vous venez de faire ma journée!