以前に作成したテーブルを再作成するスクリプトをデータ テーブルに保存しようとしています。 これはかなり大規模なアドインであり、いくつかの異なるテーブルの開閉、集計テーブルの作成、結合、更新が含まれます。最終的に、レポートに必要な唯一のデータは単純な 2 列のテーブルです。 ユーザーがこのアドインを 1 回実行できるようにしたいと考えています。結果のテーブルを誤って閉じてしまった場合でも、再作成できる元のテーブルにスクリプトが保存されるため、再度アドインを実行する必要はありません。最終的なテーブルと分析ウィンドウ。
うまくいけば、それは理にかなっています!
私が直面している問題は、最終的なテーブルが、アドイン スクリプト中に作成された多くのテーブルの 1 つの要約であるということです。 したがって、<
sum<<DELETE scripts=""></DELETE>
これは、私が試したもののうまくいかなかった例です。 dt は、このスクリプトを保存する元のテーブルです。 sum は、スクリプト内で再作成するテーブルです。
これも可能ですか?
これを行う 1 つの方法を示す簡単なスクリプトを次に示します。
names default to here(1);
dt=open("$SAMPLE_DATA\big class.jmp");
dtSum = dt << Summary(
Group( :sex ),
Mean( :height ),
Freq( "None" ),
Weight( "None" ),
link to original data table(0)
);
Eval(
Parse(
Eval Insert( "\[dt << New Table Script("Summary Table Script", ^dtSum << get script^)]\" )
)
);
そのスクリプトをテーブルに保存するにはどうすればよいですか?
サマリー テーブルを別のスクリプトとして保存するコードを追加し、メイン スクリプトでサマリー テーブルを再作成するテーブル スクリプトを実行するだけです。
私のスクリプトの結果テーブルは、基本的に「位置」と「N 行」の 2 つの列です。 このテーブルは、長いアドイン中に作成されたテーブルの要約であり、メイン テーブルの列の要約ではありません。 現在のテーブルのデータを使用してテーブルを作成するスクリプト (サマリー、スタックなど) を使用できません。 結果テーブルの正確な値を、メイン テーブルに保存できるスクリプトに保存する必要があります。 このようなもの:
New Table( "Positions of'n-1 base'",
Add Rows( 32 ),
New Column( "Position",
Numeric,
"Nominal",
Format( "Best", 10 ),
Set Values(
[1, 2, 3, 6, 8, 9, 11, 16, 18, 21, 23, 25, 26, 27, 28, 29, 30, 31, 32,
34, 35, 36, 37, 38, 39, 40, 41, 46, 48, 63, 65, 68]
)
),
New Column( "N Rows",
Numeric,
"Continuous",
Format( "Fixed Dec", 20, 0 ),
Set Values(
[13, 52, 65, 52, 65, 65, 65, 52, 52, 65, 52, 31, 28, 23, 13, 21, 14, 17,
9, 5, 4, 56, 1, 4, 5, 3, 55, 65, 65, 52, 13, 13]
)
)
)
しかし、スクリプト内でそれを行う方法がわかりません。 このスクリプトを取得する方法、またはメイン テーブルに保存する方法がわかりません。
私の計画は、結果テーブルが最初に開かれたときにすぐにスクリプトを取得し、それをメイン テーブルの新しいテーブル スクリプトに保存することでした。結果テーブルが閉じられた場合、メイン テーブル スクリプトを使用して再作成できます。
それはもっと理にかなっていますか?
やあ@aallman 、
何だかちょっと迷ってるまさにあなたはやろうとしていますが、ソースデータテーブルを積み重ねてから出力データテーブルを集計する必要があったが、新しいデータをソース データ テーブルに連結しました。
ソース dt に Stack スクリプトを記述したコードの例を次に示します。
Data Table( "Analysis" ) << Stack(
columns(
:X1,
:X2,
:X3,
:X4,
:X5,
:X6
),
Source Label Column( "Test Apparatus" ),
Stacked Data Column( "Data" )
);
Current Data Table() << Set Name( "Data Stack" ) <<
New Script(
"Fit Y by X of Data by Source",
Oneway(
Y( :Data ),
X( :Source ),
Means( 1 ),
Mean Diamonds( 1 ),
By( :Test Apparatus )
)
);
Data Table( "Data Stack" ) << New Column( "Date-Time",
"Ordinal",
Formula( :Date + :Time ),
Format( "m/d/y h:m:s" )
);
Data Table( "Data Stack" ) << Group Scripts(
"Run these after stacking",
{"Tabulate by Lot (run after stacking)",
"Tabulate by Apparatus (run after stacking)"}
);
Data Table( "Data Stack" ) << Move Script Group(
"Run these after stacking",
to last
);そして、スクリプトは新しくスタックされたデータ テーブルに引き継がれます。 また、グループ化されたスクリプトを「Run these after stacking」というタイトルでメイン dt に保存しました。これも新しくスタックされたデータ テーブルに引き継がれます。
同様の方法で問題にアプローチできるかもしれないと思います。
幸運を!、
DS