表函數 - 多個表我有兩個問題,我猜 JMP 會分配表並稍後使用它們。 步驟 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_測試數據_tx或者dt_測試數據_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
自動化和腳本編寫數據存取回复:表函數 - 多個表默認名稱為here(1),使所有變量成為本地變量。如果您想讓所有變量都是全局變量,那麼請忽略此行。
否則,您可以使用全局變量傳遞它們。JSL 中的全局變量以兩個冒號“::”開頭。我添加 g_ 來表示這是一個全局變量。
::g_dt_testdata_ss_tx = foo bar ...
回复:表函數 - 多個表這很好用謝謝.. 實際上,我發現我的腳本有一個小問題,不允許我更改表。
現在我的問題是我有 4 個打開的表,它們將在 Include() 腳本中單獨使用。 我不知道如何在新腳本中選擇數據表。 看來變量沒有傳遞到新腳本。
如果我有 4 個表名,則此 Names To Default Here(1);僅將其存儲在生成它們的腳本中的數據表變量上? 我已經嘗試過將名稱設置為默認值(0);我認為將其分配給全球......
有什麼建議麼?
謝謝
回复:表函數 - 多個表我認為這必須是表/變量的分配方式。 正是這些簡單的事情導致了最多的問題。
一道微積分問題,由於一個簡單的數學錯誤而出了什麼問題。 非常感謝你的解釋..
回复:表函數 - 多個表你已經很接近了。對於子集命令,無需命名表。只需將其分配給變量就足夠了。但您應該指定您希望子集如何使用選定的行(1)、選定的列(0) 。
不知道為什麼關閉(dtsum,nosave)如果您分配了 dtsum =(表變量之一),則不起作用。
關於dt = 當前數據表() - 我不會使用這個,因為您打開了三個表,並且哪個表是當前的可能不清楚。最好只使用現有的表變量。
// 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>
回复:表函數 - 多個表如果我正確地解釋了您的問題,我相信您還沒有完全了解指向數據表的變量如何工作以及如何使用它們。我編寫了一個非常簡單的腳本,它創建了 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 )
);*/