Dépannage Échec du tri des colonnes avec la commande Sort() et exclusion des doublons les moins récentsBonjour!
J'ai essayé de créer un script qui représente graphiquement un paramètre de plusieurs échantillons de plusieurs tables maintenant. Les échantillons sont nommés de telle sorte qu'il s'agisse de XX-AA, où XX est l'ID/nom de l'échantillon, et AA est l'horodatage de l'échantillon (jour 1, 2, 3, etc.). Je m'excuse si je pose autant de questions, je suis encore assez nouveau dans la programmation en JSL.
J'ai fusionné mes tables, puis j'ai voulu trier ma table par la colonne "Date et heure", qui est formatée au format am/d/yh:m:s. L'objectif est de supprimer les doublons d'échantillons, en ne conservant que les doublons les plus récents, tandis que les autres doublons sont masqués et exclus. De la fusion des tables, mon script ressemble à ceci :
dtMerged=dt1<<Concatenate(dt2);
dtmerged<<Sort( By(:Sample ID), Order(Ascending));
dtmerged<<Sort(By(:Date & Time), Order(Ascending));
dtmerged<<Select Where(:Sample ID == :Sample ID[Row()+1]);
dtmerged<<hide and exclude;
Pour une raison quelconque, il semble que le tri par la colonne "Date et heure" ne se produise pas et, par conséquent, je ne sais pas si ma sélection de ligne fonctionne correctement. Cette méthode de sélection masquerait-elle et exclurait-elle les doublons lorsqu'une entrée de données a plus d'un doublon ? Je pense que la raison pour laquelle le tri ne fonctionnera pas est que le nom de ma colonne contient le symbole "&".
J'apprécie beaucoup votre aide!
Re : Dépannage Échec du tri des colonnes avec la commande Sort() et exclusion du doublon le moins récentMerci beaucoup Jim! C'était très idiot de ma part de ne pas ouvrir le journal pour voir cela se produire... Je me sens comme un idiot de ne pas avoir fait cela.
Maintenant que tout est correctement trié, je peux passer à l'étape suivante, qui consiste à exclure les données en double. Mon objectif était de supprimer les itérations précédentes des doublons, ne laissant que l'entrée la plus récente de l'échantillon. Disons, par exemple, que j'ai 2 échantillons étiquetés AA-02 à 5h du matin, tandis que l'autre a été pris à 7h du matin le même jour (ce qui est enregistré dans la colonne "Heure et date" du tableau). Je veux que la table exclue l'entrée 5h du matin, mais garde l'entrée 7h du matin.
Alternativement, la même chose pourrait se produire avec 3 échantillons, disons FJ-01 ayant 3 itérations : une prise à 5h du matin, une à 7h du matin et une à 10h. Encore une fois, l'objectif est de ne conserver que l'entrée 10h, mais d'exclure l'entrée 5h et 7h. J'ai essayé de créer un script JSL en triant d'abord le tableau par l'ID d'échantillon, puis par la date et l'heure, puis en utilisant la commande Select Where comme indiqué ci-dessous :
MergedTable<MergedTable<MergedTable<MergedTable<<hide and exclude;
Cependant, aucune sélection ne se produit et le journal ne semble malheureusement pas mentionner d'erreurs. Y a-t-il quelque chose qui ne va pas avec mes critères de sélection qui ferait en sorte qu'il ne soit pas sélectionné ?
Re : Dépannage Échec du tri des colonnes avec la commande Sort() et exclusion du doublon le moins récentLe journal JMP affiche l'erreur suivante lors de l'exécution de votre code
Name Unresolved: Date in access or evaluation of 'Date' , :Date/*###*/
In the following script, error marked by /*###*/
dtMerged = Current Data Table();
dtmerged << Sort( By( :Sample ID ), Order( Ascending ) );
dtmerged << Sort( By( :Date/*###*/ & Time ), Order( Ascending ) );
Le problème vers lequel il pointe est que votre colonne nommée "Date & Time" est interprétée par JMP comme 2 noms (Date et Time) que vous souhaitez utiliser dans une comparaison booléenne "&".Ce que vous devez faire, c'est utiliser une fonction :Name() pour clarifier la situation
dtMerged = dt1 << Concatenate( dt2 );
dtmerged << Sort( By( :Sample ID ), Order( Ascending ) );
dtmerged << Sort( By( :Name( "Date & Time" ) ), Order( Ascending ) );
dtmerged << Select Where( :Sample ID == :Sample ID[Row() + 1] );
dtmerged << hide and exclude;
.