veriblesを使用して新しい列を作成/追加するみなさん、わかりにくいタイトルで申し訳ありません。どのように表現したらよいかわかりませんでした。
私の質問は、長い条件を使用して新しい列を追加するコードがあることです。
1 つのパラメータが変更される点を除き、すべての列の条件は同じです。
毎回完全なコードと新しいパラメータ値を含む条件を記述する代わりに、パラメータの代わりに変数を使用して、毎回新しい列の条件に必要な値を送信するテンプレート (関数など) を作成する方法はありますか?
自動化とスクリプト基本的なデータ分析とモデリングRe: veribles を使用して新しい列を作成/追加する次のような関数や式を使うことができます
https://www.jmp.com/support/help/en/18.0/#page/jmp/advanced-expressions-macros-and-lists.shtml#ww339382
https://www.jmp.com/support/help/en/18.0/#page/jmp/advanced-functions.shtml#
Eval Insert、Eval Expr、Parse、Substitute を使用して、ある式を別の式に挿入します。
Re: veribles を使用して新しい列を作成/追加するコードを書く必要はありません。
JMP 18 以降では、これは非常に簡単です。ディスカッション/数式/の機能 #3 をご覧ください。
要するに:
入力として使用する列を選択し、列ヘッダーを右クリックしてクリックします。
新しい数式列/ 
最後のステップとして、数式を入力してクリックします。 
[128 列を選択したので、 128 を作成します。
N 列を選択した場合は、N 列が作成されます 
Re: veribles を使用して新しい列を作成/追加する新しい数式の右クリック メニューを使用してまったく同じ数式を何度も使用したい場合は、独自の「カスタム関数」を作成し、変換カテゴリ オプションを有効にしてメニューに表示することができます。
再起動後、コードを再度実行する必要があるため、アドインまたは起動スクリプトに含めます。
Names Default To Here( 1 );
myAdd =
New Custom Function(
"custom",
"Add",
Function( {x, y = 1},
x + y - 1
)
);
myAdd << Transform Category( 1 );スクリプトインデックスから:

しかし、このアプローチは非常に「静的」です。パラメータを変更するには、ここで投票する必要があります。
新しい数式列メニュー: ユーザー定義のミニ GUI
Re: veribles を使用して新しい列を作成/追加する数値を追加する関数の例を 1 つ示します。これは「良い」関数であるためのいくつかのチェックが欠けていますが、変更される可能性のある値 (この場合は追加する列名と数値) を評価する必要があるという必要なアイデアを提供しています (前に述べた「 1 つの式を別の式に挿入...」を参照してください)。
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
cols = {"height", "weight"};
add_num_to_col = Function({dt, colname, num_to_add}, {Default Local},
new_col = Eval(EvalExpr(
dt << New Column(colname || " add " || char(num_to_add), Numeric, Continuous, Formula(
Expr(NameExpr(AsColumn(dt, colname))) + Expr(num_to_add)
));
));
return(new_col);
);
col1 = add_num_to_col(dt, "height", 10);
col2 = add_num_to_col(dt, "height", 20);
col3 = add_num_to_col(dt, "weight", 5);
Write();
Eval(Substitute()) を使用すると、よりわかりやすく、次のような解決策になる場合があります。
add_num_to_col = Function({dt, colname, num_to_add}, {Default Local},
new_col = Eval(Substitute(
Expr(dt << New Column(colname || " add " || char(num_to_add), Numeric, Continuous, Formula(
_colname_ + _num_to_add_
))),
Expr(_colname_), Name Expr(AsColumn(dt, colname)),
Expr(_num_to_add_), num_to_add
));
return(new_col);
);Re: veribles を使用して新しい列を作成/追加するこれまでのアプローチを少しひねりを加えて組み合わせたもの:
- カスタム関数を作成する*)
- 数式カテゴリに追加する
- 列ヘッダーを右クリックし、新しい数式列をクリックします。

- 新しい式を使用する
- ...パラメータを手動で入力します。

*)
Add Custom Functions(
New Custom Function(
"custom",
"add++",
Function( {column, num_to_add},
{Default Local},
column,
num_to_add
),
<<FORMULA category=""></FORMULA>The benefit: the user can enter specific parameters for every new column.
The disadvantage: no <STRONG><EM>バッチ</EM> </STRONG>mode like in the previous posts.<BR /><BR />kind of disadvantage: JMP doesn't <EM>解決/置き換え</EM> the formula, it keeps it as <FONT face="courier new,courier">追加++(...)</FONT>.<BR /> To keep it alive the formula definition has to be executed again after a restart of JMP - and maybe: shared with colleagues.
Re: veribles を使用して新しい列を作成/追加する皆様、ご協力ありがとうございました。
関連する新たな問題があり、おそらく誰かが私に説明してくれるでしょう。
特定の列にデータがない行を削除するには、次の方法を使用しました。
dt << select where( Is missing( 列( dt,col_name )[row()] ));
*結果として、正しい行は削除されますが、同時に列の値も削除されます。間違いを指摘していただけますか?
ここにスクリプト自体を添付します:
Re: veribles を使用して新しい列を作成/追加するNames Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col_name="x";
New column(col_name); // maybe another column with the same name?
new_col = New column(col_name, Formula(if(:height>60,1 )));
// get the correct column name - uncomment to make it work
//col_name = new_col << get name();
dt << select where( Is missing( Column( dt,col_name )[row()] ));
wait(1);
dt << delete rows;
Re: veribles を使用して新しい列を作成/追加する列を参照するために文字列を使用することはお勧めしません。実際の列が「2」を追加することによって作成され、文字列が別の列につながることが頻繁に発生します。
列を生成すると、列のハンドルが取得されます。このハンドルを使用するだけで、適切な列に誘導されます。
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col_name="x";
new_col = New column(col_name, Formula(if(:height>60,1 )));
dt << select where( Is missing( new_Col[] ));
Re: veribles を使用して新しい列を作成/追加するまた、列Column(col_name) を現在の値As column(col_name)に置き換える[]も好きではありません。
:col は両方を実行できます - @jthiから学びました:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col_name="x";
new_col = New column(col_name, Formula(if(:height>60,1 )));
myCol = Name Expr(As Column(new_col)); // very cool trick (c) Jarmo
Show(Name Expr(myCol));
dt << select where( Is missing( myCol ));