データテーブルを分割して計算を実行するための一般/変数スクリプトを作成する方法は?私は日常的に同じデータ テーブルの操作と計算を実行しており、スクリプトを使用してそれを自動化することに関心があります。
一般的な手順は次のようなものです。

- テーブルの分割 (列「値」を列「属性」で分割) > 新しいテーブルを生成
- 新しい列を生成する (C) = 列 A + 列 B
- 新しい列の生成 (D) = 列 A / 列 C

ただし、テーブルごとに行数と値が異なります。これらの関数をクリックして、JMP によって生成されたスクリプトを調べると、行数と各列の値がハードコーディングされています。任意のサイズの新しいデータ テーブルでスクリプトを実行できるように、これらを完全に可変にするにはどうすればよいですか?
これまでのところ、次のようなスクリプトがありますが、行数の入力を求めるプロンプトが表示され、空のテーブルが生成されるだけです。ドキュメントを見つけるのに苦労しているので、助けていただければ幸いです。
New Table( "split table",
Add Rows(),
New Script(
"Source",
Data Table() <<
Split(
Split By( :attribute ),
Split( :value ),
Output Table( "split table" ),
Sort by Column Property ) ),
New Column( "date", Character( 1 ), "Nominal", Set Values( {""} ) ),
New Column( "A", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) ),
New Column( "B", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) ),
New Column( "C", Numeric, "Continuous", Format( "Best", 12 ), Formula( :Name( "A" ) + :Name( "B" ) ) ),
New Column( "D", Numeric, "Continuous", Format( "Percent", 12, 0 ), Formula( :Name( "A" ) / :Name( "C" ) ) ) )
Re: データ テーブルを分割して計算を実行するための一般/変数スクリプトの作成方法は?こんにちはジム、
データ表ですみません。私のコンピューターでは問題なく動作するようですので、単純に再アップロードしました。
私はあなたのスクリプトを試してみましたが、それは1つのことを除いて機能します:列「日付」、「A」、「B」の作成は冗長です。これらの列は分割テーブル関数によって新しいテーブルに引き継がれるからです。したがって、スクリプトはさらに単純になり、完全に機能します。
Names Default To Here( 1 );
// Create a pointer variable to be able to
// reference the current active data table
dt = Current Data Table();
// Create the split data table
dt2 = dt << Split(
Split By( :attribute ),
Split( :value ),
Output Table( "split table" ),
Sort by Column Property
);
// Add new columns to the split data table
dt2 << New Column( "C",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( :Name( "A" ) + :Name( "B" ) )
);
dt2 << New Column( "D",
Numeric,
"Continuous",
Format( "Percent", 12, 0 ),
Formula( :Name( "A" ) / :Name( "C" ) )
);
どうもありがとうございます!
Re: データ テーブルを分割して計算を実行するための一般/変数スクリプトの作成方法は?1. 添付されたデータ テーブルが破損しています。テキストエディタで開いたところ、データを削除した旨のメッセージが表示されています。
2. あなたの質問のテキストから、スクリプト構造があなたが望むことを行うべきだとあなたがどのように考えているかを理解していると思いますが、実際には空のデータテーブルを生成するだけです....あなたが報告したように.
3.スクリプトの開始点としてあなたが望むものは次のとおりです
Names Default To Here( 1 );
// Create a pointer variable to be able to reference
// the current active data table
dt = Current Data Table();
// Creat the split data table
dt2 = dt << Split(
Split By( :attribute ),
Split( :value ),
Output Table( "split table" ),
Sort by Column Property
);
// Add the new columns to the split data table
dt2 << New Column( "date", Character( 1 ), "Nominal", Set Values( {""} ) );
dt2 << New Column( "A", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) );
dt2 << New Column( "B", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) );
dt2 << New Column( "C",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( :Name( "A" ) + :Name( "B" ) )
);
dt2 << New Column( "D",
Numeric,
"Continuous",
Format( "Percent", 12, 0 ),
Formula( :Name( "A" ) / :Name( "C" ) )
);