JSLを使って、JMPのデータテーブルと行列との間で情報を移動させることができます。行列代数を使って、JMPデータテーブルにある数値に対して独自の計算を実行し、その結果をJMPデータテーブルに戻して保存することができます。
ここでは、JSLを使ってデータテーブルのデータを行列に移動する方法について説明します。
Get As Matrix()関数は、データテーブルまたは列のすべての数値を含む行列を生成します。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
A = dt << Get As Matrix;
[12 59 95,
12 61 123,
12 55 74, ...]
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col = Column( "身長( インチ)" );
A = col << Get As Matrix;
[59, 61, 55, 66, 52, ...]
Get All Columns As Matrix()関数は、文字列を含め、データテーブルのすべての列の値を行列で戻します。文字型の列には、名前の昇順に1から順に番号が付けられます。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
A = dt << Get All Columns As Matrix;
[21 12 1 59 95,
28 12 1 61 123, ...]
データテーブルの特定の列だけを取得するには、列リスト引数(名前または文字)を使用します。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
x = dt << Get As Matrix( {"身長(インチ)", "体重(ポンド)"} );
または
x = dt << Get As Matrix( { "身長(インチ)"n, "体重(ポンド)"n} );
[59 95, 61 123, 55 74, ...]
データテーブルで現在選択されている行の行列を求めるには:
dt << Get Selected Rows;
メモ: どの行も選択されていない場合は、空の行列が戻されます。
式が真となる行番号の行列を求めるには:
dt << Get Rows Where( expression );
たとえば、次のスクリプトは性別が男性(M)である行番号を戻します。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
A = dt << Get Rows Where( 性別 == "M" );
[6, 7, 8, 12, 13, 14, ...]
ここでは、行列のデータをデータテーブルに移動させる方法について説明します。
Set Values()関数は、列ベクトルの値を既存のデータテーブル列にコピーします。
col << Set Values( x );
colはデータテーブル列への参照で、xは列ベクトルです。
たとえば、次のスクリプトは、testという新しい列を作成し、ベクトルxの値をtest列にコピーします。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "test" );
col = Column( "test" );
x = 1::40;
col << Set Values( x );
Set Matrix()は、既存のデータテーブルに、行列の値を格納するのに必要なだけの新しい行と列を作成して、行列の値をコピーします。新しい列には、「列1」、「列2」といった名前が付けられます。
dt = New Table( "B" );
dt << Set Matrix([1 2 3 4 5, 6 7 8 9 10]);
このスクリプトは、2つの行と5つの列を含んだBという新しいデータテーブルを作成します。
行列引数から新しいデータテーブルを作成するには、As Table(matrix)コマンドを使用します。列には、「列1」、「列2」といった名前が付けられます。たとえば、次のスクリプトは、Aの値を含んだ新しいデータテーブルを作成します。
A = [1 2 3, 4 5 6, 7 8 9, 10 11 12];
dt = As Table( A );