Obtenez des valeurs de colonne uniques et utilisez-les pour filtrer/nettoyer dans une autre tableBonjour, quelle serait l'approche pour utiliser, par exemple, les clés d'un tableau pour sélectionner ou filtrer des lignes avec les mêmes clés, mais dans une table JMP différente. J'ai deux tables. L'un d'eux mappe les ID d'échantillon pour les tests chimiques à différents paramètres de facteurs (température, temps, numéro d'étude, etc.). J'obtiens avec succès les ID d'échantillon dans un tableau. (Désolé, je suis totalement novice en la matière.)
smplID = Associative array(:sampleid) << Get Keys;
Maintenant, je veux utiliser ces clés pour sélectionner des lignes dans le deuxième tableau (où se trouvent mes réponses), inverser la sélection de lignes et supprimer les lignes.Cette référence était, jusqu'à présent, ne me menait nulle part. Peut-être la solution ci-dessous, comme décrit ici, est mieux adapté pour commencer ?
Summarize(dt, smpleID = by(:sampleid));
Ou peut-être cette approche est préférable?
dt << Summary (Group ( :sampleid ), Frequ( "None" ), Weight( "None" );
Quoi qu'il en soit, ce que je veux vraiment savoir, c'est comment je peux utiliser l'une de ces approches pour nettoyer efficacement une table de données pour les lignes dont je n'ai pas besoin, avant de poursuivre l'analyse des données. Je suppose que je dois apprendre à boucler.
Oui, j'essaie de lire le Guide de script chaque fois que cela est possible. Je ne suis tout simplement pas en mesure de lui donner la priorité.
ScriptRe : Obtenir des valeurs de colonne uniques et les utiliser pour filtrer/nettoyer dans une autre tablePour obtenir des valeurs uniques, toutes ces méthodes sont valides et leur vitesse dépendra de la quantité de données dont vous disposez. Une chose à noter est que si vous souhaitez prendre des valeurs numériques uniques et que vous utilisez Summarize, vous devrez les reconvertir en numériques (Summarize les renvoie sous forme de chaînes).
Différentes manières d'obtenir des valeurs uniques :
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
aa_uniq = Associative Array(dt:age) << get keys;
Summarize(dt, summarize_uniq = by(:age));
dt_summary = dt << Summary(Group(:age), Freq("None"), Weight("None"), private);
summary_uniq = Column(dt_summary, 1) << get as matrix;
Close(dt_summary, no save);
Show(aa_uniq, summarize_uniq, summary_uniq);Pour sélectionner des valeurs dans la table de données, vous pouvez utiliser Contient avec sélectionner où. Il n'est peut-être pas nécessaire d'inverser la sélection de ligne car vous pouvez utiliser ! (ou Not()) pour annuler le résultat que vous obtenez des fonctions. Les attentes sont ici juste pour l'amour des démonstrations :
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
names_of_interest = {"KATIE", "LILLIE", "JOHN"};
wait(2);
dt << Select Where(Contains(names_of_interest, :name)) << Invert Row Selection << Hide and Exclude(1);// << clear select;
//Remove selections
wait(2);
dt << Clear Row States;
wait(2);
dt << Select Where(!Contains(names_of_interest, :name)) << Hide and Exclude(1);// << clear select;De plus, si vous avez beaucoup de données, ce n'est peut-être pas le moyen le plus efficace de le faire, mais c'est probablement le plus simple et je commencerais par cela.
Re : Obtenir des valeurs de colonne uniques et les utiliser pour filtrer/nettoyer dans une autre tableMerci, cela m'a BEAUCOUP aidé ! Je ne suis pas sûr de ce que "beaucoup de données" signifie vraiment. Le premier tableau que j'ouvre contient aujourd'hui environ 400 lignes, mais ce nombre est appelé à augmenter avec la mise en œuvre en cours d'un système de gestion de l'information de laboratoire (LIMS) dans notre organisation. Je suppose qu'avec le temps, il y en aura des milliers, peut-être même des dizaines de milliers de lignes. La deuxième table où je "nettoie" tout, pour moi, les ID d'échantillons non pertinents a déjà quelque 50 000 lignes.
Pour l'instant, après avoir implémenté votre solution, je travaille avec un tableau d'exemples d'ID. (Bien que je pense que mes compétences sont extrêmement limitées, les scripts sont toujours extrêmement précieux et satisfaisants pour trouver une solution, même lorsqu'ils sont "arrachés" à la communauté. Alors encore merci beaucoup.)
Re : Obtenir des valeurs de colonne uniques et les utiliser pour filtrer/nettoyer dans une table différenteCes méthodes seront rapides pour ce nombre de lignes !
Il y a une autre solution qui m'est venue à l'esprit, vous pouvez d'abord créer une table récapitulative, puis la joindre à la table dont vous souhaitez supprimer les valeurs trouvées.
Utilisation des échantillons de données JMP Cars.jmp et Cars 1993.jmp comme exemple. Cars 1993 sera l'une des données avec lesquelles nous filtrerons Cars en utilisant la colonne Model.
1. Créer un tableau récapitulatif à partir de Cars 1993 avec le modèle comme groupe
2. Joignez ce nouveau tableau récapitulatif au tableau Cars avec les paramètres suivants :

3. Dans la nouvelle colonne Match Flag, vous pouvez voir deux valeurs : Both et Main. Les deux signifie que le modèle peut être trouvé à partir des deux ensembles de données
Je pense que vous pouvez le faire directement avec Cars 1993, mais vous devez faire attention aux doublons (laisser tomber les multiples avec table pourrait résoudre ce problème, pas sûr). Dans ce cas également, vous voudriez choisir les colonnes que vous souhaitez conserver, car il y aura des doublons (au moins avec cet exemple).

Ces deux éléments peuvent également être scriptés assez facilement, car JMP peut effectuer la plupart des scripts.