Je souhaite définir une liste stockée dans une variable sous forme de noms de colonnes multiples à lire dans la colonne Y de Control Chart Builder.Je réfléchis à la façon d'écrire un script JSL pour obtenir le titre.
La version de JMP utilisée est la 18.
dt02=current data table();
//列名を変数に
columnNames = dt02 << Get Column Names;
//3列目以降の列はすべてトレンドを確認するために必要
columnNames2={};
For( j = 3, j <= N Items( columnNames ), j++,
Insert Into( columnNames2, Column( columnNames[j] ) );
);
//X-bar_and_S_chart作成
grp01=dt02<<CONTROL chart="" builder=""></CONTROL><LINGO-LABS id="lingo-labs-825157" slang="ja-JP" mode="CREATE"><LINGO-LABEL>Automatisation et scripts</LINGO-LABEL><LINGO-LABEL>Fenêtres</LINGO-LABEL></LINGO-LABS>Re : Je souhaite définir une liste stockée dans une variable sous forme de plusieurs noms de colonnes à lire dans la colonne Y de Control Chart Builder.Il semble que le générateur de cartes de contrôle souhaite être l'une des plates-formes difficiles de JMP. Avec quelque chose comme ça, vous devriez pouvoir faire fonctionner toutes les plates-formes (même les plus difficiles/ennuyeuses)
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
cont_cols = dt << Get Column Names("Continuous", String);
ys = Expr(Y());
For Each({colname}, cont_cols,
Insert Into(ys, Name Expr(AsColumn(dt, colname)));
);
Eval(Substitute(
Expr(ccb = dt << Control Chart Builder(
Variables(Subgroup(:age), _ycols_),
Show Control Panel(0),
Chart(Position(1), Limits(Sigma("Standard Deviation"), Spec Limits(1))),
Chart(Position(2), Points(Statistic("Standard Deviation")), Limits(Sigma("Standard Deviation"))),
Show Control Panel(0)
)),
Expr(_ycols_), Name Expr(ys)
));Re : Je souhaite définir une liste stockée dans une variable sous forme de plusieurs noms de colonnes à lire dans la colonne Y de Control Chart Builder.Merci beaucoup pour le joli code !
Le problème a été complètement résolu, merci beaucoup.
Pour être honnête, je ne comprends toujours pas très bien le code. . .
Je pense que l'image est la suivante: chaque fois qu'un remplacement est effectué sur le tableau stocké dans ys, le résultat est stocké dans la carte de contrôle. Est-ce exact ?
Re : Je souhaite définir une liste stockée dans une variable sous forme de plusieurs noms de colonnes à lire dans la colonne Y de Control Chart Builder.In most of the platforms you could use Eval() with list of columns but in case of control chart builder it doesn't work and you have to have very specific format to make it work Y(:col, :col2). I build the correct format into ys, Y(:height, :weight) and then use Substitute to add to the Control Chart Builder message so it will be "forced" to evaluate correctly. You can see this if you remove Eval() outside of the Substitute() and run that

Vous pouvez également vérifier ce qu'est ys en utilisant Show(NameExpr(ys))
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
cont_cols = dt << Get Column Names("Continuous", String);
ys = Expr(Y());
For Each({colname}, cont_cols,
Insert Into(ys, Name Expr(AsColumn(dt, colname)));
);
Show(Name Expr(ys)); // Name Expr(ys) = Y(:height, :weight);
Re : Je souhaite définir une liste stockée dans une variable sous forme de plusieurs noms de colonnes à lire dans la colonne Y de Control Chart Builder.soit Eval(Substitute(Expr(...)))
... ou Eval(Eval Expr( Expr()...))
Trucs et astuces – bonnes pratiques avec JMP/JSL
Considérez Eval (Eval Expr( Expr()...)) comme :
veuillez rechercher Expr() et Eval Expr() .... avant d'évaluer le tout.
Malheureusement, tous les trois commencent par E... , il est donc un peu difficile de s'en souvenir avec la bonne signification.
Le 4ème E... est Name Expr() - @jthi l'a utilisé dans la boucle for pour convertir les chaînes en colonnes (:column) *)
... et nous en avons besoin pour obtenir Y(...) au lieu d'un message d'erreur : )
*) Fortunately, Control Chart Builder accepts strings as alternative to columns.
On peut donc convertir directement la liste des noms de colonnes en un Y() de noms de colonnes en remplaçant l'en-tête par
Remplacer par:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
tmp = dt << Get Column Names("Continuous", String);
Substitute Into(tmp, Expr(List()), Expr(Y()));
Eval(Eval Expr(
ccb = dt << Control Chart Builder(
Variables(Subgroup(:age), Expr(Name Expr(tmp))),
Show Control Panel(0),
Chart(Position(1), Limits(Sigma("Standard Deviation"), Spec Limits(1))),
Chart(Position(2), Points(Statistic("Standard Deviation")), Limits(Sigma("Standard Deviation"))),
Show Control Panel(0)
)
));