Desidero definire un elenco memorizzato in una variabile come nomi di colonne multiple da leggere nella colonna Y di Control Chart Builder.Sto pensando a come scrivere uno script JSL per realizzare il titolo.
La versione di JMP utilizzata è 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>Automazione e scripting</LINGO-LABEL><LINGO-LABEL>Finestre</LINGO-LABEL></LINGO-LABS>Ri: Voglio definire un elenco memorizzato in una variabile come più nomi di colonne da leggere nella colonna Y di Control Chart Builder.Sembra che il generatore di grafici di controllo voglia essere una delle piattaforme difficili in JMP. Con qualcosa del genere, dovresti riuscire a far funzionare tutto (anche quelli difficili/fastidiosi)
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)
));Ri: Voglio definire un elenco memorizzato in una variabile come più nomi di colonne da leggere nella colonna Y di Control Chart Builder.Grazie mille per il bel codice!
Il problema è stato completamente risolto, grazie mille.
Ad essere sincero, ancora non capisco molto bene il codice. . .
Penso che l'immagine sia che ogni volta viene eseguita una sostituzione sull'array memorizzato in ys e il risultato viene memorizzato nella carta di controllo. È corretto?
Ri: Voglio definire un elenco memorizzato in una variabile come più nomi di colonne da leggere nella colonna Y di 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

Puoi anche controllare cosa ys usando 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);
Ri: Voglio definire un elenco memorizzato in una variabile come più nomi di colonne da leggere nella colonna Y di Control Chart Builder.o Eval(Sostituisci(Espr(...)))
... o Eval(Eval Expr( Expr()...))
Suggerimenti e trucchi: le migliori pratiche con JMP/JSL
Pensa a Eval (Eval Expr( Expr()...)) come:
per favore cerca Expr() e Eval Expr() .... prima di usare Eval() su tutto.
Sfortunatamente, tutti e tre iniziano con E... , quindi è un po' complicato ricordarne il significato corretto.
La quarta E... è Name Expr() - @jthi l'ha usata nel ciclo for per convertire le stringhe in colonne (:column) *)
... e abbiamo bisogno che ottenga Y(...) invece di un messaggio di errore : )
*) Fortunately, Control Chart Builder accepts strings as alternative to columns.
Quindi è possibile convertire direttamente l' elenco dei nomi di colonna in una Y() di nomi di colonna sostituendo la testa tramite
Sostituisci in:
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)
)
));