テーブル関数 - 複数のテーブルJMP がテーブルを割り当てて後で使用すると思われるため、2 つの問題があります。 ステップ 2 と 3 は、別のスクリプト内にあり、含む()関数。
// ステップ 1: サーバーからデータを取得し、それを dt_testdata_ss に割り当てます
dt_testdata_ss = Open Database( <SERVER string="">, <QUERY string=""> , "dt_testdata_ss" );</QUERY></SERVER>
// ステップ 2: 条件付きの新しいテーブルを作成します
dt_testdata_ss_tx = dt_testdata_ss
<< select where ( (:col_1 == 24) & (:col_2 == 1))
<< subset( output table name("dt_testdata_ss_tx"));
// ステップ 2a:graphplot.jsl で dt_testdata_ss_tx を使用します
// ステップ 2b: distribution.jsl で dt_testdata_ss_tx を使用します
// ステップ 3: 条件付きの新しいテーブルを作成します
dt_testdata_ss_rx = dt_testdata_ss
<< select where ((:col_1 == 16) & (:col_2== 3 ))
<< subset( output table name( "dt_testdata_ss_rx"));
// ステップ 3a:graphplot.jsl で dt_testdata_ss_rx を使用します
// ステップ 3b: distribution.jsl で dt_testdata_ss_rx を使用します
現在、3 つのテーブルを同時に開いていますが、提供されたスクリプトに正しいテーブルを呼び出すことができません。 まで行ったこともあります
dt_testdata_ss
dt_testdata_ss_tx
dt_testdata_ss_rx
スクリプトを実行すると、変更して実行すると次のエラーが発生しますdtにdt_testdata_txまたはdt_testdata_rx :
エラー: 'Close' のアクセスまたは評価の引数が無効です。Close *###*/(dtSum, nosave)
テーブルが実行されないため、dt が dt_testdata_tx または dt_testdata_rx に割り当てられていないとしか考えられません。 3 つすべてが開いている場合、特定のテーブルを呼び出して操作する方法がわかりません。 提案はありますか?
前もって感謝します
dt = current data table(); // removed this line
dtsum = dt // changed dt to either dt_testdata_ss_tx or dt_testdata_ss_rx
dtFinal = dt // changed dt to either dt_testdata_ss_tx or dt_testdata_ss_rx
自動化とスクリプト作成データアクセスRe: テーブル関数 - 複数のテーブル名前のデフォルトは here(1) で、すべての変数がローカルになります。すべての変数をグローバルにしたい場合は、この行を省略します。
それ以外の場合は、グローバル変数を使用してそれらを渡すことができます。JSL のグローバル変数は 2 つのコロン「::」で始まります。これがグローバル変数であることを示すために g_ を追加します。
::g_dt_testdata_ss_tx = foo bar ...
Re: テーブル関数 - 複数のテーブルこれはうまくいきます、ありがとう。 実際、スクリプトにテーブルを変更できない小さな問題が見つかりました。
今私の問題は、4つの開いたテーブルがあり、それらはInclude()スクリプトで個別に使用されることです。 新しいスクリプトでデータテーブルを選択する方法がわかりません。 変数が新しいスクリプトに渡されていないようです。
4 つのテーブル名がある場合は、Names To Default Here(1) を実行します。それを元のスクリプトのデータテーブル変数にのみ保存しますか? Names To Default Here(0); を試してみました。グローバルに割り当てられていると思っていました...
助言がありますか?
ありがとう
Re: テーブル関数 - 複数のテーブルテーブル/変数の割り当て方法が問題だったと思います。 最も問題を引き起こすのは単純なことです。
微積分の問題、単純な計算ミスのせいで何が間違っているのか。 説明ありがとうございます。
Re: テーブル関数 - 複数のテーブルかなり近いですね。subset コマンドの場合、テーブルに名前を付ける必要はありません。変数に代入するだけで十分です。ただし、サブセットをどのように操作するかを指定する必要があります選択された行(1)、選択された列(0) 。
理由はわかりませんclose(dtsum、nosave) dtsum = (テーブル変数の 1 つ) を割り当てた場合は、機能しません。
に関してdt = 現在のデータテーブル() - 3 つのテーブルが開いており、どのテーブルが現在のテーブルであるかが明確ではない可能性があるため、これは使用しません。既存のテーブル変数をそのまま使用することをお勧めします。
// Step 1: Pull in data from server and assign it to dt_testdata_ss
dt_testdata_ss = Open Database( <SERVER string="">, <QUERY string=""> , "dt_testdata_ss" );
// Step 2: creates new table with conditions
dt_testdata_ss_tx = dt_testdata_ss << select where ( (:col_1 == 24) & (:col_2 == 1 ))
<< subset( selected rows( 1 ), selected columns( 0 ));
// Step 2a: uses dt_testdata_ss_tx in graphplot.jsl
// Step 2b: uses dt_testdata_ss_tx in distribution.jsl
// Step 3: creates new table with conditions
dt_testdata_ss << clear row states; // Remove prior selec
dt_testdata_ss_rx = dt_testdata_ss << select where ( (:col_1 == 16) & (:col_2 == 3 ))
<< subset( selected rows( 1 ), selected columns( 0 ));
// Step 3a: uses dt_testdata_ss_rx in graphplot.jsl
// Step 3b: uses dt_testdata_ss_rx in distribution.jsl</QUERY></SERVER>
Re: テーブル関数 - 複数のテーブル私があなたの問題を正しく解釈しているとすれば、データテーブルを指す変数がどのように機能するのか、そしてそれらの使用方法を十分に理解できていないのだと思います。3 つの異なるデータ テーブルを作成する非常に単純なスクリプトをまとめました。次に、さまざまなデータ テーブルのそれぞれについて、作成された順序とは異なる順序で分析が行われます。これを実現するために、データ テーブル ポインター変数を使用しました。また、分析を実行する前に現在のデータ テーブルをリセットすることを選択した場合に、これと同じ順序で出力を実行する方法を示すコメント セクションも追加しました。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
dt << select where( :sex == "F" );
dtFemale = dt << subset( selected rows( 1 ), selected columns( 0 ) );
dt << invert row selection;
dtMale = dt << subset( selected rows( 1 ), selected columns( 0 ) );
dtFemale << Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
dtMale << Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
dt << Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
// Or
/*current data table( dtFemale );
Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
current data table( dtMale );
Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
current data table( dt );
Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);*/