OK, j'ai donc commencé à me familiariser avec JMP et j'ai travaillé avec succès sur mon premier script pour extraire, réorganiser et formater une table de données à partir d'une base de données. Fonctionne bien et fait gagner du temps. Comme j'ai développé ce script avec une copie de Se lancer dans les scripts JMP sur mes genoux, j'étais naturellement intéressé à comprendre le scénario. Voici donc le problème.
Pensez à un processus de fabrication nécessitant de nombreuses mesures différentes. La base de données contient toutes les méthodes de test dans une colonne et tous les résultats de test dans une autre colonne. Pour obtenir ce que je veux, je dois diviser cette table. Cependant, étant donné qu'une grande partie de ce que nous avons dans la base de données provient de fichiers Excel hérités, un certain recodage de la colonne contenant les noms de test est nécessaire en raison d'entrées antérieures erronées. Pour accéder à ce morceau de (re) code, je suis passé par Recode... dans le menu Colonnes, et c'est le seul morceau du script que je ne comprends pas. (C'est généralement un script très basique.)
Dans l'exemple affiché ci-dessous, les lettres majuscules et les chiffres reflètent les variations du nom de la méthode de test réelle utilisée. Par exemple, A est un test (par exemple, test de pH), B est un autre test (par exemple, viscosité). A(1), A(2), ... A(n) seraient tous recodés en A, puis B(1), ... B(n) à B, et ainsi de suite. Maintenant, comment le logiciel fait-il exactement à partir de ce morceau de code quelles variables vont ensemble? J'ai vérifié le guide de script et l'index de script mais je ne comprends toujours pas. _rcOrig et _rcNow, que signifient-ils ? Le script, c'est-à-dire les variables dans leurs lignes respectives, sont disposées exactement comme elles le sont dans ma copie du script complet.
Merci pour une réponse.
dt << Recode Column(
dt:TestName,
{Map Value(
_rcOrig,
{"A(1)", "A(2)",
"A(3)", "A(4)",
"A(5)", "A(6)", "B(1)",
"B(2)", "C(1)", "C(2)",
"C(3)", "C(4)", "D(1)", "D(2)", "E(1)",
"E(2)", "F(1)", "F(2)", "G(1)", "G(2)",
"H(1)", "H(2)", "I(1)", "I(2)",
"I(3)", "I(4)", "J(1)", "J(2)", "K(1)",
"K(2)", "L(1)", "L(2)",
"M(1)", "M(2)", "M(3)",
"M(4)"},
Unmatched( _rcNow )
)},
Target Column( col1 )
);
dt << End Data Update;
Salut,
S'il s'agit toujours d'une lettre, vous pouvez créer une formule simple comme celle-ci :
dt << New Column( "Test_Name", formula( Left(:TestName, 1)));
J'ai créé une nouvelle colonne dans une table de données avec les valeurs de test que vous aviez dans le JSL que vous avez fourni.

J'ai ensuite ouvert la boîte de dialogue Recoder et effectué les modifications de recodage.

Je suis ensuite allé au triangle rouge et j'ai sélectionné
Script=>Enregistrer dans la fenêtre de script
et ci-dessous est ce qu'il m'a donné.
Names Default To Here( 1 );
dt = Data Table( "Big Class" );
dt << Begin Data Update;
col1 = dt << New Column( dt:test );
col1 << Set Name( "test 2" );
dt << Move Selected Columns( {col1}, after( dt:test ) );
dt << Recode Column(
dt:test,
{Map Value(
_rcOrig,
{"A(1)", "A", "A(2)", "A", "A(3)", "A", "A(4)", "A", "A(5)", "A", "A(6)",
"A", "B(1)", "B", "B(2)", "B", "C(1)", "C", "C(2)", "C", "C(3)", "C", "C(4)",
"C", "D(1)", "D", "D(2)", "D", "E(1)", "E", "E(2)", "E", "F(1)", "F", "F(2)",
"F", "G(1)", "G", "G(2)", "G", "H(1)", "H", "H(2)", "H", "I(1)", "I", "I(2)",
"I", "I(3)", "I", "I(4)", "I", "J(1)", "J", "J(2)", "J", "K(1)", "K", "K(2)",
"K", "L(1)", "L", "L(2)", "L", "M(1)", "M", "M(2)", "M", "M(3)", "M", "M(4)",
"M"},
Unmatched( _rcNow )
)},
Target Column( col1 )
);
dt << End Data Update;
Dans l'exemple, vous pouvez voir comment les valeurs sont définies pour chacune des paires valeur/résultat