子集脚本<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />JMP 用户您好,
我能够生成脚本来对大型数据文件进行子集化,但随后必须手动命名这些文件并通过第二个和第三个子集脚本单独运行它们。 有没有办法迭代运行子集命令并保存文件以包含子集定义?
例如:按第 1 列(红、蓝、绿)对文件“颜色”进行子集化,以生成并保存文件:Colors.red.jmp、Colors.blue.jmp、Colors.green.jmp,然后按第 8 列(明亮、浅色)对这些文件进行子集化,深色)创建和保存文件
颜色.red.bright.jmp、颜色.red.light.jmp、颜色.red.dark.jmp、颜色.blue.bright.jmp、颜色.blue.light.jmp、颜色.blue.dark.jmp、颜色。绿色.bright.jmp、颜色.green.light.jmp、颜色.green.dark.jmp。
列的位置会有所不同。
谢谢 !!!
回复:子集脚本那还是不行。 我还添加了更多时间 (30)、(90) 等。 我能够使文件受到保存保护,这意味着我无法在没有说明是否应保存它们的情况下关闭它们,但命名仍然是 myfile 2 3.jmp 等子集的子集。 我认为子集变量列表不知何故关闭了。 我将在周末排除更多故障,并且可以向习惯使用我们的 JMP 版本的人寻求帮助。
非常感谢您的帮助和建议,祝您周末愉快,MS!
回复:子集脚本可能是性能问题。 尝试在两个 For 循环中插入 Wait(0) 命令,以确保在 JMP 尝试保存表之前表已完成。
回复:子集脚本这很奇怪。 路径是正确的,因为我用它在同一目录中打开了一个dt。 它创建了所有文件,但它们的名称类似于“MyFile 2 3.jmp 子集的子集”、“MyFile 2 2.jmp 子集的子集”等。这些文件正是我想要的,令人惊奇的是该脚本创建了它们,不幸的是它没有正确命名它们并保存它们。 最坏的情况是,我手动命名它们,这仍然节省了我大量的时间!
感谢您的努力。
埃里克
回复:子集脚本我刚刚在 JMP 9.0.3 中尝试了该脚本,它运行得很好,就像在 JMP 10 中一样。
检查你的路径变量。 它必须是一个字符串,并且以 / 开头和结尾。
例如,在我的 Mac 上,这是有效的: myPath = "/Users/MS/Desktop/"
回复:子集脚本你好女士,
那已经非常接近了!它创建了所有子集,但没有保存任何表。 我收到此消息:无法保存文件。 未知数据目标。
我正在使用 JMP 9,所以我想知道创建文件的命令是否存在差异,或者我是否执行了错误的操作? 我将正确的路径放入脚本中。
谢谢,
埃里克
回复:子集脚本至少在 JMP 10 中有一个“子集依据”复选框。 如果选择,将自动生成所选列的每个级别的子集。 如果已知按列的数量,则很容易在 JSL 中实现该功能。 然而,概括这一点比我想象的要棘手。
这种基于将顺序生成的子集插入列表(列表内)的方法似乎可行:
//示例表
dt =新表( “颜色” ,
添加行( 12 ) ,
新专栏( “颜色” ,
特点,
标称,
设定值( { “红色的” , “红色的” , “红色的” , “红色的” , “蓝色的” , “蓝色的” , “蓝色的” , “蓝色的” , “蓝色的” , “绿色的” , “绿色的” , “绿色的” } )
) ,
新专栏( “强度” ,
特点,
标称,
设定值(
{ “明亮的” , “明亮的” , “黑暗的” , “光” , “光” , “光” , “光” , “黑暗的” , “黑暗的” , “黑暗的” , “光” , “明亮的” }
)
) ,
新专栏( “结束” ,
特点,
标称,
设定值(
{ “哑光的” , “空白的” , “哑光的” , “空白的” , “哑光的” , “空白的” , “哑光的” , “空白的” , “哑光的” , “空白的” , “哑光的” , “空白的” }
)
) ,
新专栏( “稠度” ,特点,标称)
) ;
对于每一行( :浓度=颜色||强度||结束) ; // 只是为了检查它是否正常工作...
// 示例表结束
// 脚本从这里开始
列= {颜色,强度,结束} ; // 任意 nr 个按列的子集(按层次顺序)
恩特= N表() ; //当前打开的表数量
子列表=评估清单( { dt <<子集(经过(列[ 1 ] ) )} ) ; //第一级子集
//递归地生成低层子集
为了(我= 2 ,我<= N 项(列) ,我++,
插入(子列表,评估清单( {评估(子列表[我- 1 ] ) <<子集(经过(列[我] ) )} ) )
) ;
// 命名并保存所有子集
我自己的路= “小路” ; //更改为所需路径
为了(我= 1 ,我<= N表() -恩特,我++,
电视=数据表(我) <<获取表变量名; // 级别存储为表变量
子名= {} ;
为了( j = 1 , j <= N 项(电视) , j ++,
插入(子名,数据表(我) <<获取表变量(电视[ j ] ) )
) ;
插入(子名, dt <<得到名字) ;
反向进入(子名) ;
数据表(我) <<节省(我自己的路||连接项目(子名, “。” ) ) ;
) ;
// 结束脚本 //close all(数据表);
回复:子集脚本谢谢PMroz,
问题是我确实需要保留中间文件,并且我给出的示例是编造的,列名称每次都会更改。
谢谢,
埃里克
回复:子集脚本我有一个应用程序,需要以几种不同的方式对大型数据集进行子集化,并对每个子集运行相同的分析。我没有创建单独的数据集,而是使用 SELECT 和 EXCLUDE 的组合来使大型数据集中的数据可供分析。例如:
dt =新表( “颜色示例” ,
添加行( 12 ) ,
新专栏( “颜色” ,特点,标称,
设定值(
{ “红色的” , “红色的” , “红色的” , “红色的” , “蓝色的” , “蓝色的” , “蓝色的” , “蓝色的” , “蓝色的” ,
“绿色的” , “绿色的” , “绿色的” } ) ) ,
新专栏( “强度” ,特点,标称,
设定值(
{ “明亮的” , “明亮的” , “黑暗的” , “光” , “光” , “光” , “光” , “黑暗的” ,
“黑暗的” , “黑暗的” , “光” , “明亮的” } ) ) ) ;
号=行数( dt ) ;
颜色列表= { “红色的” , “蓝色的” , “绿色的” } ;
强度列表= { “明亮的” , “光” , “黑暗的” } ;
为了(我= 1 ,我<=尼特姆斯(颜色列表) ,我++,
单色=颜色列表[我] ;
为了( k = 1 , k <=尼特姆斯(强度列表) , k ++,
单一强度=强度列表[我] ;
// 排除与此颜色和强度不匹配的所有行
dt <<选择地点( :颜色==单色& :强度==单一强度)
<<反转行选择<<排除;
已选择=编号-行数( dt <<获取选定的行) ;
dt <<清除选择;
如果(已选择> 0 ,
// 在这里对 dt 进行分析。仅使用未排除的行。
// 我发现忽略排除行的唯一命令是 Tables >> Summary
打印( “#行:” ||字符(已选择) || “ 颜色: ” ||单色||
“ 强度: ” ||单一强度) ;
) ;
// 清理下一个选择
dt <<清除行状态;
) ;
) ;