公開日: 09/19/2023

行列とデータテーブル

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 );
より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).