概要
JMP スクリプト言語 (JSL) を使用すると、別のデータ テーブルに保存されているデータに基づいて値を割り当てるスクリプトを作成できます。次のサンプル スクリプトは、ルックアップ テーブルを使用して、生徒の年齢に基づいて教育レベルを割り当てる方法を示しています。スクリプトは次のことを行います。
- 生徒とその年齢のリストを含む元のデータ テーブルを開きます。
- 学校の値を格納するために、元のデータ テーブルに新しい列を追加します。
- 学校レベルの年齢範囲を含む参照テーブルを作成します。
- 元のデータ テーブルの各行をループします。
- 参照テーブルで、年齢が年齢範囲内にある行番号を取得します。
- 参照テーブル行の学校の値を元のデータ テーブルの新しい列に割り当てます。
説明書
JMP セッションで、 [ファイル] メニューをクリックし、 [新規] ► [スクリプト]を選択します。以下のスクリプトをコピーして、スクリプト ウィンドウに貼り付けます。サンプル スクリプトを実行するには、 [編集]メニューをクリックし、 [スクリプトの実行]を選択します。
/* Open a sample data table */
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
/* Add a column for the assignment */
dt << New Column( "School", Character );
/* Create a lookup table */
lt = New Table( "SchoolLookup",
Add Rows( 3 ),
New Column( "SchoolLevel", Character, Nominal, Set Values( {"Elementary", "Middle", "High"} ) ),
New Column( "Low", Numeric, Continuous, Format( "Best", 12 ), Set Values( [5, 13, 15] ) ),
New Column( "High", Numeric, Continuous, Format( "Best", 12 ), Set Values( [12, 14, 18] ) )
);
/* Loop through each row of the original data table */
For( i = 1, i <= N Rows( dt ), i++,
/* Obtain a matrix contining the row number of the lookup table where the age falls within the range */
ageRange = lt << Get Rows Where(
Column( lt, "Low" )[] <= Column( dt, "age" )[i] & Column( dt, "age" )[i] <= Column( lt, "High" )[]
);
/* Extract the row number from the matrix */
r = ageRange[1];
/* Assign the school value to the original data table */
Column( dt, "School" )[i] = Column( lt, "SchoolLevel" )[r];
);
追加ドキュメント
JMP スクリプト言語の詳細については、『 JMP スクリプト ガイド』を参照してください。このガイドにアクセスするには、JMP 内からヘルプメニューをクリックしてJMP ヘルプを選択します。オンラインの目次から、スクリプト ガイドを選択します。
[以前の JMP ノート 46535]
代替案1: テーブル/更新を使用する
違い: agerange[1]の代わりにr= ageRange[Length(agerange)]を使用する
代替案2: テーブル/結合を使用する
相違点: 新しいテーブルを生成する