Comment ajouter des valeurs de données à une table dans une boucle for à l'aide de Select Columns Où créer une nouvelle table de données globale de données ciblesFor( date = date_array << First, !Is Empty( date ), date = date_array << Next( date ), //looping through date_array's keys is clunky but done this way in JMP
dt << Select Columns( :Timepoint, :Target Channel, :Run date ), Where(:Timepoint == date);
dt << Subset( ( Selected Rows ), Output Table Name( "Subset" ));<BR />);
Je souhaite ajouter, progressivement, à chaque itération d'une boucle for, des données spécifiées par un critère de colonne (:Timepoint == LBCM) et les combiner dans une table de données combinées à la fin, lorsque la boucle est terminée, et afficher le résultat .
À partir de maintenant, cela n'ajoute rien nulle part; Je me retrouve sans aucune nouvelle table de données.
J'ai également tout cela dans une autre boucle for, basée sur un ID d'échantillon, mais je pense que l'ajout ici ne ferait que compliquer les choses pour l'instant.
Tous les autres exemples que j'ai trouvés dans les forums de la communauté JMP sont très compliqués, du moins ils semblent, construire des tableaux de données et les transférer vers des tables de données ou des choses comme ça. Je souhaite que la solution ici soit aussi simple que possible. Bien sûr, je contribuerai à la conversation au fur et à mesure que les réponses arriveront, mais pour l'instant, je suis tout simplement coincé.
Merci de votre aide,
Mike
AnalytiqueTableau de donnéesAutreScriptUNRe : Comment ajouter des valeurs de données à une table dans une boucle for à l'aide de Select Columns Où créer une nouvelle table de données globale de données ciblesLa sélection de la partie Colonnes est peut-être un très petit gain d'efficacité, mais cela rend surtout le code plus facile à lire (à mon avis).
Avez-vous essayé d'ajouter des impressions de débogage à l'intérieur des boucles pour voir s'il y a quelque chose à sous-ensemble :
For(i = 1, i <= N Items(IDs), i++,
ID = IDs[i];
date_array = Associative Array({"date1", "date2", "date"}, {{}, {}, {}});
For(date = date_array << First, !Is Empty(date), date = date_array << Next(date),
dt << Select Where(:Timepoint == date);
Show(N Items(dt << Get Selected Rows));
dt_ld4 << Subset(Columns({"Timepoint", "Target Channel"}), Selected Rows, Output table name("Subset"));
);
);J'ai ajouté Show(N Items(dt << Get Selected Rows)); qui devrait vous dire si des lignes ont été sélectionnées. De plus, je ne me sentirais pas à l'aise d'utiliser ID comme nom de variable si vous avez une colonne nommée de la même manière (cela pourrait fonctionner, pas sûr, mais j'évite de tels noms juste pour être sûr). Je le remplacerais par currentID ou quelque chose.
Je pense qu'à ce stade, cela pourrait peut-être être plus facile si nous avions un sujet dans lequel nous pourrions essayer de vous aider à résoudre ce problème partie par partie.Une chose qui nous aiderait beaucoup serait d'avoir un exemple de jeu de données. L'ensemble de données n'a pas besoin d'être volumineux, peut être anonymisé ou complètement faux, mais il doit toujours être réaliste (types de données de colonne identiques, possibilité de tester différents cas).
Re : Comment ajouter des valeurs de données à une table dans une boucle for à l'aide de Select Columns Où créer une nouvelle table de données globale de données ciblesMerci pour ça, Jarmo. Alors, votre code est-il principalement un gain d'efficacité ou un véritable gain de fonctionnalité ?
Cela ne fonctionne pas tout à fait pour moi, mais je dois dire que j'ai tout cela dans une autre boucle for (ou deux):
For( i = 1, i <= N Items( IDs ), i++,
ID = IDs[i];
date_array = Associative Array( {"date1", "date2", "date"}, {{}, {}, {}} );
For( date = date_array << First, !Is Empty( date ), date = date_array << Next( date ), //looping through date_array's keys is clunky but done this way in JMP
dt << Select Where(:Timepoint == date);
dt_ld4 << Subset(Columns({"Timepoint", "Target Channel"}), Selected Rows, Output table name("Subset"));
//...
););L'ordinateur semble réfléchir un peu lors de l'exécution mais rien ne s'affiche à l'écran. Je dois noter que tout ce code est anonymisé, il y a donc une possibilité de fautes d'orthographe et d'erreurs de transcription, ainsi qu'une possibilité de se confondre avec les versions antérieures de ce qui a été écrit. Je suppose qu'il est prudent de supposer que des similitudes approximatives peuvent être faites ...
Je ne sais pas si ces deux lignes doivent être à l'intérieur des boucles ou à l'extérieur de l'une d'elles, ou si j'ai besoin des deux boucles à ce stade. J'ai besoin de jeter un regard profond sur le script une fois de plus.
Je discute également de quelques sujets distincts concernant ce morceau de code dans des articles distincts. Quelqu'un de senior pourrait-il me faire savoir si c'est une étiquette acceptable, ou s'il serait préférable de donner la priorité au morceau de code dans un seul message et de discuter des sujets séparés dans le seul message, ou si l'une ou l'autre manière est correcte?
Muchos Gracias,
Michael
Re : Comment ajouter des valeurs de données à une table dans une boucle for à l'aide de Select Columns Où créer une nouvelle table de données globale de données ciblesJe ne suis pas sûr à 100 % de ce que vous voulez faire ici, donc je devine un peu
Ces deux lignes semblent présenter des problèmes :
dt << Select Columns( :Timepoint, :Target Channel, :Run date ), Where(:Timepoint == date);
dt << Subset( ( Selected Rows ), Output Table Name( "Subset" )););
Vous pouvez combiner les colonnes que vous voulez dans la commande de sous-ensemble et la sélection des lignes peut être effectuée avec << Select Where (il semble qu'il vous manque Select).
dt << Select Where(:Timepoint == date);
dt << Subset(Columns({"Timepoint", "TargetChannel"}), Selected Rows, Output table name("Subset"));De plus, si vous préférez d'abord sélectionner les colonnes que vous souhaitez sous-ensemble, vous devrez ajouter les colonnes sélectionnées dans la commande Sous-ensemble
dt << Subset(Output table name("Subset"), Selected Rows, Selected Columns);Re : Comment ajouter des valeurs de données à une table dans une boucle for à l'aide de Select Columns Où créer une nouvelle table de données globale de données ciblesJeter un coup d'œil à
dt << add rows(n);
pour ajouter de nouvelles lignes si nécessaire