メモリアレイ内のループテーブルの連結を完了し、データテーブルを1回生成する方法「Big Class.jmp」を使用して、操作要件を説明します。
私はコードに従って完了していますが、速度が遅いです。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "test", formula( :weight - :height ) );
dt << run formulas;
Wait( 0 );
For( i = 1, i <= N Row( dt ), i++,
d1 = New Table( "a",
Add Rows( dt[i, 6] + 1 ),
New Column( "name", Character, Nominal ),
New Column( "step", Continuous ),
New Column( "level", Continuous )
);
d1[1 :: N Row( d1 ), 1] = dt[i, 1];
Column( "step" ) << Formula( dt[i, 4] + (Row() - 1) );
d1 << run formulas;
Column( "step" ) << deleteFormula;
Column( "level" ) << Formula( If( Row() == dt[i, 6] + 1, 10, Ceiling( (Row()) / ((dt[i, 6] + 1) / 9.9) ) ) );
d1 << run formulas;
Column( "level" ) << deleteFormula;
If( i == 1,
d2 = Current Data Table(),
Current Data Table( dt );
d2 << Concatenate( Data Table( d1 ), Append to first table );
d1 << Close Window;
);
);
1。新しい列「test」を作成して、「weight」-「height」を計算します
2。次の要件に従って新しいテーブルを生成し、それらを最初に生成された新しいテーブルにつなぎます。
新しいフォームにはそれぞれ、「名前」、「ステップ」、および「レベル」の3つの列があります。新しいテーブルの行数は、最初のステップで取得した各名前の「テスト」値です。
「ステップ」列は「高さ」で始まるデータで、各行で「重み」行まで1ずつ増加します。
「レベル」列:これらの行を小から大までの10個のセグメントに均等に分割します。段落ごとの行数は異なる場合があります。
3。テーブルを1つずつテーブルにつなぎます。

メモリアレイ内のループテーブルの連結を完了し、データテーブルを1回生成する方法
専門家に感謝します!
再:メモリ配列内のループテーブルの連結を完了し、データテーブルを一度生成する方法は?メモリ変数と行列のみを使用するステップにコードを変更する必要があるのではなく、以下の変更では、データテーブルの「プライベート」オプションを利用します。 表示不可能なデータテーブルを作成できます。したがって、それらを表示するために必要なオブジェクトの作成のオーバーヘッドをすべて排除します。 私のコードは、処理時間を少なくとも半分に短縮しました。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "test", formula( :weight - :height ) );
dt << run formulas;
Wait( 0 );
For( i = 1, i <= N Row( dt ), i++,
d1 = New Table( "a",
private,
Add Rows( dt[i, 6] + 1 ),
New Column( "name", Character, Nominal ),
New Column( "step", Continuous ),
New Column( "level", Continuous )
);
d1[1 :: N Row( d1 ), 1] = dt[i, 1];
Column( "step" ) << Formula( dt[i, 4] + (Row() - 1) );
d1 << run formulas;
Column( "step" ) << deleteFormula;
Column( "level" ) << Formula(
If( Row() == dt[i, 6] + 1,
10,
Ceiling( (Row()) / ((dt[i, 6] + 1) / 9.9) )
)
);
d1 << run formulas;
Column( "level" ) << deleteFormula;
If( i == 1,
d2 = d1,
Current Data Table( dt );
d2 << Concatenate( Data Table( d1 ), Append to first table );
Close(d1, nosave);
);
);
dtFinal = d2 << subset( selected rows( 0 ), selected columns( 0 ) );<BR />Close(d2,nosave);
プライベートオプションの詳細については、スクリプトガイドを参照してください。
再:メモリ配列内のループテーブルの連結を完了し、データテーブルを一度生成する方法は?民間、
ジムありがとう!