選擇列包含值的位置我有一個腳本應該:
1)允許用戶選擇多個文件打開
2) 關閉所有沒有數據的文件(即只有一列有一個值為 NA)
3) 關閉第 7 列中不包含 1146 的所有文件(該列在某些文件中稱為 Sealer #,在其他文件中未命名,此外,在某些文件中該列是字符列,在其他文件中是數字列)
我已經完成了前兩件事,但正在努力解決第三件事。 這是我到目前為止的腳本。
Files = Pick File(
"Select JMP File",
"$DESKTOP\Burst Data for Spencer",
{"Excel|csv;xlsx;xls", "JMP Files|jmp;jsl;jrn", "All Files|*"},
1,
0,
"",
"multiple"
);
For( i = 1, i <= N Items( Files ), i++,
DT = Try( Open( Files[i] ) );
DT << Set Name( Files[i] );
If( N Cols( DT ) == 1,
Close( DT, No Save ),
Column( 7 ) << Data Type( Character );
check = DT << Get Rows Where( Contains( Column( 7 ), "1146" ) );
If( N Rows( check ) == 0,
Close( DT, No Save )
);
);
);
據我所知,問題出在線路上檢查 = DT<<獲取行的位置(包含(柱子( 7 ), “1146” )); ,但我不知道如何解決它。
有什麼建議麼?
回复:通過彈出窗口提示用戶選擇列將插件下載到您的下載文件夾
然後轉到 JMP 並
文件==>打開
轉到下載文件夾
單擊 Runs Test.jmpaddin 文件
然後轉到“打開”按鈕的向下箭頭,然後選擇
使用插件生成器打開
在插件生成器中,選擇菜單項選項卡
然後單擊“運行測試”條目
在“運行此 JSL”區域中,您將看到嵌入的腳本
將其剪切並粘貼到腳本窗口
回复:通過彈出窗口提示用戶選擇列謝謝吉姆,我找到了插件,我如何查看腳本代碼?
山姆
回复:通過彈出窗口提示用戶選擇列嗨,吉姆,你能說得更具體一些嗎?這是一個內置腳本嗎?
謝謝
山姆
回复:通過彈出窗口提示用戶選擇列我建議您查看“運行測試”中的 JMP 插件,其中包含一個執行您要求對示例執行的操作的示例。 它提供了一個對話框,允許選擇列並將它們放入選擇框中。 它還具有過濾能力和召回能力。
JMP 平台對話框的運行測試(Wald-Wolfowitz 測試)和 JSL 實現
通過彈出窗口提示用戶選擇列大家好,我正在嘗試讓腳本提示用戶從表中選擇 2 列 x 坐標和另一個 y 坐標。
下圖是我喜歡腳本執行的操作。 用戶選擇 x,y 坐標,然後我使用它將其作為變量傳遞。 稍後我需要在腳本中使用它來進行芯片映射。有任何想法嗎?謝謝,下面的圖是照片店顯示的最終結果。
謝謝。

回复:選擇列包含值的位置我嘗試調試該腳本部分,但無法使其工作。 我最終得到了這個版本,它的功能進行了一些細微的修改。
For( i = 1, i <= N Items( Files ), i++,
DT = Try( Open( Files[i] ) );
Wait( 0 );
DT << Set Name( Files[i] );
If( N Cols( DT ) == 1,
Close( DT, No Save )
,
Column( DT, 7 ) << Data Type( Character );
Names Default To Here( 1 );
name = Char( Column( DT, 7 ) << get name );
Print( name );
Eval( Parse( "check = DT << Select Where( Contains( " || ":" || name || " , " || "char(1146)))" ) );
If( N Rows( DT << Get Selected Rows ) == 0,
Close( DT, No Save )
,
DT << Invert Row Selection;
DT << Delete Rows;
DT << Clear Select;
//oldname = char(DT<< Get Name());
//rename = char(Word(-1, oldname, "-"));
//DT<<SET name=""></SET>
回复:選擇列包含值的位置這是代碼的稍微修改版本,其中列出了 Get RowsWhere 語句的值和 check 的值。
Names Default To Here( 1 );
Files = Pick File(
"Select JMP File",
"$DESKTOP\Burst Data for Spencer",
{"Excel|csv;xlsx;xls", "JMP Files|jmp;jsl;jrn", "All Files|*"},
1,
0,
"",
"multiple"
);
For( i = 1, i <= N Items( Files ), i++,
DT = Try( Open( Files[i] ) );
Wait( 0 );
DT << Set Name( Files[i] );
If( N Cols( DT ) == 1,
Close( DT, No Save ),
Column( DT, 7 ) << Data Type( Character );
Names Default To Here( 1 );
//Current Data Table( DT );
Eval(
Parse(
"check = DT << Get Rows Where( Contains( " || ":" || Char( Column( DT, 5 ) << get name ) || " , \!"1146\!" ) ) );"
)
);
Show(
"check = DT << Get Rows Where( Contains( " || ":" || Char( Column( DT, 7 ) << get name ) || " , \!"1146\!" ) ) );",
check
);
If( N Rows( check ) == 0,
Close( DT, No Save )
);
);
);
您可能想對此運行 JMP 調試器。 我的假設是與第 7 列或類似的內容不匹配。 我知道代碼是有效的,因為我在一個示例數據表上測試了它,該表有一列,其中有幾行,列值中包含 1146
回复:選擇列包含值的位置我嘗試將該部分放入腳本中,但似乎不起作用。 它仍然關閉空白文件,但關閉有數據且包含 1146 的文件。 我嘗試將 If(NRows(check)==0 更改為 !=0,但似乎沒有什麼區別。 這個錯誤出現在日誌中:
意想不到的“)”。 可能少了一個“;”或者 ”,”。
第 1 行第 64 列:...( :密封劑 # , "1146" ) ) ►);...
其餘被忽略的文本是
這是更新後的腳本:
Files = Pick File(
"Select JMP File",
"$DESKTOP\Burst Data for Spencer",
{"Excel|csv;xlsx;xls", "JMP Files|jmp;jsl;jrn", "All Files|*"},
1,
0,
"",
"multiple"
);
For( i = 1, i <= N Items( Files ), i++,
DT = Try( Open( Files[i] ) );
DT << Set Name( Files[i] );
If( N Cols( DT ) == 1,
Close( DT, No Save ),
Column( 7 ) << Data Type( Character );
Names Default To Here( 1 );
Current Data Table( DT );
Eval(
Parse( "check = DT << Get Rows Where( Contains( " || ":" || Char( Column( 7 ) << get name ) || " , \!"1146\!" ) ) );" )
);
If( N Rows( check ) == 0,
Close( DT, No Save )
);
);
);
回复:選擇列包含值的位置這段代碼將起作用
Names Default To Here( 1 );
dt = Current Data Table();
Eval( Parse( "check = DT << Get Rows Where( Contains( " || ":" ||
Char( Column( 3 ) << get name ) || " , \!"1146\!" ) ) );" ) );