別の列に基づいて列に値を割り当てるユーザー入力用の新しいウィンドウを作成するための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スクリプトを作成する方法数値編集ボックスで<< 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 Insert、Eval Expr、Parse、およびSubstituteを使用して、ある式を別の式に挿入します。 。 そして、あなたが式を持ちたいなら
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スクリプトを作成する方法あなたは考慮しましたかCols> Recodeプラットホーム?あなたがやりたいことをするための良いローテクな方法かもしれません。
Re:別の列に基づいて列に値を割り当てるユーザー入力用の新しいウィンドウを作成するJMPスクリプトを作成する方法確かに-それは私が行き詰まる前にやろうと思ったことです。 しかし、JMPインターフェースをよく知らない人のためのアプリケーションが欲しいです。