选择列包含值的位置我有一个脚本应该:
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\!" ) ) );" ) );