Rechercher / copier une valeur dans une cellule d'une autre ligneJe ne parviens pas à trouver une solution satisfaisante à mon problème, même après quelques recherches approfondies sur le forum et dans les fichiers d'aide de JMP.
J'ai un jeu de données avec des patients, chacun d'entre eux ayant plusieurs phases d'une étude sur des lignes successives (car chaque patient a un nombre différent de phases). Une des colonnes est la phase et dans une de ces lignes, pour chaque patient, il y a une phase appelée "Base". J'essaie de définir une nouvelle variable pour placer la valeur Yy de "Base" dans la même ligne que les identifiants du patient. Voir ci-dessous:
Numéro de patient Nom du patient Phase Yy = Variable d'intérêt New Column = "Base" [par patient]
1 Patient XYZ abc 4 // veut 2 ici
1 def 8
1 Base 2
1 ghi 10
2 Patient MNO abc 45 // veut 54 ici
2 def 36
2 ghi 24
2 Base 54
3
3
3
3
Toute aide est appréciée!
Merci,
A dessiné
Re: Trouver / copier une valeur dans une cellule sur une autre ligneIl existe plusieurs méthodes pour le faire. @ron_horne La méthode de peut être faite avec pointer et cliquer. Le script ci-dessous utilise un tableau associatif appelé dictionnaire ou recherche dans un autre logiciel.
J'ai raté @ron_horne La table, alors j'en ai une autre. Voici le script et ci-joint une table avec ce script intégré comme script de table. Il suffit de cliquer pour courir.
Names default to here(1);
dt = current data table();
brows = dt << get rows where(:Phase == "Base");
aa = Associative Array( Column("Patient #")[brows], Column("Yy = Variable of interest")[brows]);
// patient numbers are the keys and the Base values, the values
nc = dt << New Column("New Column = \!"Base\!" [by patient]", numeric, Continuous);
nc << set each value(If(length(:Patient Name) > 0, aa[Column("Patient #")[]] ) );Re: Trouver / copier une valeur dans une cellule sur une autre lignesalut @ drmn43 ,
essayez le script suivant sur la table attachée.
Sinon, il est beaucoup plus facile de le faire manuellement en suivant les mêmes étapes.
dt = Current Data Table();
dt << select where( :Phase == "Base" );
subdt = dt << Subset( Selected Rows( 1 ) );
dt << clear select;
// make a sleek change of names
subdt << delete columns( "Base by Patient" );
subdt:Name( "Yy = Variable of interest" ) << Set Name( "Base by Patient" );
// Before updating the it is useful to delete columns that we do not want to updat
keep = {"Patient #", "Base by Patient"};
todelete = subdt << get column names( "string" );
For( icol = 1, icol <= N Items( keep ), icol++,
Remove From( todelete, Contains( todelete, Keep[icol] ), 1 )
);
subdt << delete columns( todelete );
dt << Update( With( Data Table( "Subset of Database" ) ), Match Columns( :Patient # = :Patient # ) );
Close( subdt, no save );
Si vous avez besoin des autres lignes vides, je peux ajouter une ou deux autres étapes pour le faire.
Ron