別の列に基づいて列に値を割り当てるユーザー入力用の新しいウィンドウを作成する JMP スクリプトを作成する方法やあ、
JMP スクリプトの特定の部分で行き詰まっており、別の視点から助けが得られることを期待しています。
次のようなデータセットがありますが、さらに多くのカテゴリがあり、それぞれに長い名前が付けられています。

指定された列に基づいて、数値を含む別の列を作成したいと考えています。 この製品は完全に自動化されており、各カテゴリがリスト表示されたポップアップ ウィンドウと、ユーザーがカテゴリに対応する数値を入力できる数値編集ボックスを備えている必要があります。 例えば:
ポップアップ ウィンドウ ボックス: ポップアップ ウィンドウ ボックスにすべてのプロンプトが表示された新しいウィンドウ。
Aに対応する値を入力してください: ___1___ Bに対応する値を入力してください: ___2___ Cに対応する値を入力してください: ___3___ Dに対応する値を入力してください: ___4___ Eに対応する値を入力してください: ___5___ |
結果のデータ テーブルは次のようになります。

以下は私が現在持っている JMP スクリプトです。 JMP ファイルもこの投稿にアップロードしました。 私が助けを必要としているのは、赤文字下に。 ユーザー入力に基づいて、リスト内の i 番目の一意のカテゴリに対応する、for ループ内の i 番目の値を割り当てるのに問題があります。 unique_char 、初期化された数値リストの i 番目の位置に、 num_listこれは、列 2 を作成する次の for ループで後で使用されます (以下の JMP スクリプトの最後)。
dt = Current Data Table();
//get the unique character variable list
Names Default To Here( 1 );
col9 = Column(dt, "Column 1");
unique_char = Associative Array(col9) << get keys; // unique_char = {"A", "B", "C", "D", "E"}
//get n items in character variable list
nuniquechar = N Items(unique_char); //will be 5, if categories are A, B, C, D, E
//initalize number list
num_list = {};
//create new window to create multiple number edit boxes
nw = New Window( "Set Values",
<<MODAL> // HELP:
// name a numeric variable on each iteration that will be the holder of a numeric edit box
// put the resulting ith entry into the num_list
num_list[i] = number edit box(),
// number box default is null/missing. If no input, place a missing value in the num_list
)
);<BR /><BR />// TO DO: <BR />// Create new column assigning the num_list values to <BR />// the corresponding rows based the unique character value. <BR />// Pseudo-code: <BR />// for(i in 1:nuniquechar)<BR />// if :column 1 = unique_char[i], num_list[i]<BR />//<BR />//</MODAL>この結果は、次の条件ロジックを使用して列 1 のカテゴリに基づいて列 2 を作成する、自動化されたユーザーフレンドリーなバージョンになります。

品質およびプロセスエンジニアリングRe: 別の列に基づいて列に値を割り当てるユーザー入力用の新しいウィンドウを作成する JMP スクリプトの作成方法確かに、それは行き詰まる前にやろうと思ったことです。 しかし、私は JMP インターフェースをよく知らない人のためのアプリケーションを作りたいと考えています。
Re: 別の列に基づいて列に値を割り当てるユーザー入力用の新しいウィンドウを作成する JMP スクリプトの作成方法検討しましたか列 > 再コード化プラットホーム?あなたがやりたいことを実現するための良いローテクな方法かもしれません。
Re: 別の列に基づいて列に値を割り当てるユーザー入力用の新しいウィンドウを作成する JMP スクリプトの作成方法これは私がまとめた小さなスクリプトです。新しい列を数値にするためにオプションのセレクターが必要な場合はありません (ここでは文字のままにします)。
新しい列名を入力する必要があり、新しい名前が現在データ テーブルに存在する場合は実行されないチェックがあります (JMP が列を上書きしないことはわかっていますが、それでも混乱を招く可能性があります)。
/* recode */
self = New Namespace();
Show( self << Get Name );
self:table = Current Data Table();
self:column = Insert( {}, self:table << Get Selected Columns );
self:column = self:column[1] << Get Name;
Show( self:column );
self:values = Associative Array( Column( self:table, self:column ) ) << Get Keys;
self:string list = {};
For( i = 1, i <= N Items( self:values ), i++,
Insert Into( self:string list, Char( i ) )
);
Eval( Eval Expr(
win = New Window( "Set Values",
<<MODAL></MODAL>Re: 別の列に基づいて列に値を割り当てるユーザー入力用の新しいウィンドウを作成する JMP スクリプトの作成方法数値編集ボックスで << Set Function を使用して、unique_aa 連想配列に値を取得しています。 次に、モーダル ウィンドウを閉じた後、その連想配列を使用して必要な数式列を構築します。
Names Default To Here(1);
dt = Current Data Table();
//get the unique character variable list
col9 = Column(dt, "Column 1");
unique_char = Associative Array(col9) << get keys;
nuniquechar = N Items(unique_char); //will be 5, if categories are A, B, C, D, E
unique_aa = Associative Array(unique_char, Repeat({.}, nuniquechar)); //repeat to initialize values as missing
//create new window to create multiple number edit boxes
vlbExpr = V List Box();
For(i = 1, i <= nuniquechar, i++,
Insert Into(vlbExpr, Text Box("Number for " || Char(unique_char[i]) || ":")); //i.e. "Number for A:"
Eval(
Eval Expr(Insert Into(vlbExpr, Number Edit Box(., <<SET function=""></SET>
Eval(EvalExpr()) については、「Eval(EvalExpr())」を参照してください。 Eval Insert、Eval Expr、Parse、Substitute を使用して、ある式を別の式に挿入する。 そして、数式が必要な場合は、