制作和更新旧电子表格中包含特定值的新电子表格你好JMP社区,
我是JMP和JSL的新手,所以我很难完成这两个相关的任务。
1)我想编写一个脚本,从旧电子表格中创建包含特定实体的行的新电子表格。 例如,我想创建一个脚本,创建所有男性行的新数据表。(见下面的附图)
2)我需要能够自动更新此数据表。假设全表位于本地数据库(如SSMS上),如何使用JMP脚本从本地SQL数据库更新所有男性表?我已经尝试添加自动生成的“更新数据库”脚本,但我不知道我在做什么。任何帮助将非常感激。
非常感谢JMP社区。



回复:从旧电子表格中创建和更新包含特定值的新电子表格 @jmpandvba ,
在您提供的示例中:
NewHt=dt<<SUBSET></SUBSET>
请注意,NewHt是对数据表的引用。因此,在update语句中,您将引用传递给要追加的数据表。在我提供的示例脚本中,将“dt1”
回复:从旧电子表格中创建和更新包含特定值的新电子表格对此主题的最新更新,
在创建了子集的新数据表之后,如果附加原始数据集,如何编写JSL脚本来更新它?
我假设在JMP脚本指南的第177页上给出了JSL中的“更新”功能:
NewHt=dt<<SUBSET></SUBSET>
但是我怎么能用我们刚才制作的特定子集做到这一点呢?
回复:从旧电子表格中创建和更新包含特定值的新电子表格 @jmpandvba ,
//Clean up
Clear Log(); Clear Globals(); Close All(DataTables,"No Save");
// Open Sample Data
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Subset based on condition
dt << Select Where(:Sex == "M");
// Select some columns
Column(dt,"age")<< Set Selected(1);
dt << Invert Column Selection;
dt1 = dt << Subset(Selected Rows(1),Selected Columns(1));
dt1 << Set Name("Boys In Class");
// Save as spreadsheet
Close(dt1,Save("C:\Test.xlsx")); 回复:从旧电子表格中创建和更新包含特定值的新电子表格感谢您的快速回复!另一个快速问题,如果我想制作除了年龄之外的所有列的子集,我该怎么做?(我想我写的脚本行是这样的,但列括号中是什么?)
subdt = dt << Subset(Column(..........), Output Table Name( "Male summary" ) );
回复:从旧电子表格中创建和更新包含特定值的新电子表格 @jmpandvba ,
回答问题的一部分很简单,如果您在JMP中有数据,则可以轻松创建新的数据表或电子表格,如下所示。
//Clean up
Clear Log(); Clear Globals(); Close All(DataTables,"No Save");
// Open Sample Data
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Subset based on condition
dt << Select Where(:Sex == "M");
dt1 = dt << Subset("");
dt1 << Set Name("Boys In Class");
// Save as spreadsheet
Close(dt1,Save("C:\Test.xlsx"));
至于如何自动更新数据表,这将需要批量/计划执行JMP脚本。在一天中的给定时间,如果您可以让应用程序调用您的JMP脚本并运行,您将能够实现它。您可以查看JMP的C#或VBA自动化示例以获取想法。(Z:\ Program Files \ SAS \ JMP \ 14 \ Samples \ Automation)