Comment copier et coller des cellules de données à partir de différentes cellules d'ID ?Salut,
J'ai un exemple de tableau de données inclus dans ce post. Je dois copier les informations des cellules ProTest de la phase B à la phase A dans la même colonne. Cependant, je dois d'abord faire correspondre les Test_ID en suivant la règle :
Phase A <-> Phase B
1 11
3 13
5 15
7 17
9 19
J'ai un nombre différent de participants à cause de données manquantes.
Comment puis-je faire, s'il vous plaît ?
Merci beaucoup!
Re : Comment copier et coller des cellules de données à partir de différentes cellules d'ID ?Oops!Le script obtient toujours uniquement la première valeur qui est la phase A.Modifiez donc l'instruction avec un filtre supplémentaire & :Phase=="B"
xx = dt << get rows where(:Subject_ID ==uid & :Test_ID == tid & :Phase=="B");
Re : Comment copier et coller des cellules de données à partir de différentes cellules d'ID ?Incroyable, @gzmorgan0 !! Travaillé!!
Où puis-je en savoir plus sur ces commandes telles que obtenir des lignes où () et nrow () et d'autres pour avoir un contrôle total des lignes et des colonnes ?Le nrow () accepte-t-il un entier à l'intérieur au cas où je souhaite limiter le défilement JMP du vecteur?
Je vais essayer de m'adapter à mon problème... _/\_
Merci beaucoup!!
Re : Comment copier et coller des cellules de données à partir de différentes cellules d'ID ?Oops!Le script obtient toujours uniquement la première valeur qui est la phase A.Modifiez donc l'instruction avec un filtre supplémentaire & :Phase=="B"
xx = dt << get rows where(:Subject_ID ==uid & :Test_ID == tid & :Phase=="B");
Re : Comment copier et coller des cellules de données à partir de différentes cellules d'ID ?Salut @gzmorgan0
Merci pour votre solution ! Un seul score n'a pas pu être copié de la phase B à la phase A. C'est Test_id = 9 (identificateurs égaux). Je n'ai pas compris pourquoi.
Votre script est joint.
Merci beaucoup!
Re : Comment copier et coller des cellules de données à partir de différentes cellules d'ID ?Vous devriez regarder dans le tableau associatif de JMP. Considérez un tableau associatif comme une liste à clé. Vous définissez la clé et les valeurs associées. Les clés peuvent être des chaînes, des expressions, des listes, presque tout sauf des valeurs décimales numériques, les entiers sont acceptables.Voir le script modifié ci-dessous. Dans d'autres langages de script, un tableau associatif est appelé un dictionnaire. Je l'utilise souvent.
La réponse est oui à votre autre question, ajoutez plus de variables de filtre.
Bonne chance.
Names Default to Here(1);
dt = Data Table("example2_modified");
decode_aa = Associative Array({1,2,5,8,9}, {20,22,55,18,9});
For(i=1, i<=nrow(dt), i++,
if (:Phase[i] =="A",
uid = :Subject_ID[i];
tid = decode_aa[ :Test_ID[i] ];
xx = dt << get rows where(:Subject_ID ==uid & :Test_ID == tid);
if(nrow(xx)==1,
:ProTest[i] = :ProTest[xx[1]]
);
); //end if Phase
); // end For iRe : Comment copier et coller des cellules de données à partir de différentes cellules d'ID ?Brillant, @gzmorgan0 ! 
J'ai deux questions:
1. Au cas où je voudrais ajouter plus de "filtres" ou "Par", dois-je créer plus de variables (par exemple, uid, tid) et les insérer dans la fonction "get rows where ( )", en ajoutant & "Column name = = 'nouvelle variable'" ?
2. Si le Test_id "ne peut pas" être défini comme une séquence logique telle que "somme 10", pensez-vous qu'il est possible de créer, par exemple, avant (ou à l'intérieur) "For looping statement" une matrice qui associe chaque Test_id de Phase A à Phase B ? De cette manière, l'utilisateur peut définir n'importe quelle association entre les identifiants dans les deux phases.
Je voudrais vous remercier pour votre aide!
Meilleur!
PS : Il est joint à ce post une suggestion d'association suivante et j'y ai ajouté votre script :
Phase A Phase B
1 20
2 22
5 55
8 18
9 9
Re : Comment copier et coller des cellules de données à partir de différentes cellules d'ID ?Même si votre tableau est trié et agréable, ce script ne suppose rien, il permet même la possibilité qu'il n'y ait pas de ProTest correspondant.
Names Default to Here(1);
dt = Data Table("example2");
For(i=1, i<=nrow(dt), i++,
if (:Phase[i] =="A",
uid = :Subject_ID[i];
tid = :Test_ID[i] +10;
xx = dt << get rows where(:Subject_ID ==uid & :Test_ID == tid);
if(nrow(xx)==1,
:ProTest[i] = :ProTest[xx[1]]
);
); //end if Phase
); // end For i